forked from: forked from: forked from: forked from: forked from: 3D tag cloud
/**
* Copyright slmdidim ( http://wonderfl.net/user/slmdidim )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/3JvL
*/
// forked from Photoshipshack's forked from: forked from: forked from: forked from: 3D tag cloud
// forked from razaina's forked from: forked from: forked from: 3D tag cloud
// forked from Emre.Alper's forked from: forked from: 3D tag cloud
// forked from thoton's forked from: 3D tag cloud
// forked from esabear's 3D tag cloud
package {
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.events.Event;
import flash.text.TextField;
import flash.filters.GlowFilter;
import flash.filters.BlurFilter;
import flash.filters.BitmapFilterQuality;
import org.papervision3d.view.BasicView;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.materials.special.BitmapParticleMaterial;
import org.papervision3d.core.geom.Particles;
import org.papervision3d.core.geom.renderables.Particle;
import org.papervision3d.events.InteractiveScene3DEvent;
public class FlashTest extends Sprite {
private var scale:Number = 2.2;
private var radius:Number = 400;
private var smoothing:Boolean = true;
private var minAlpha:Number = 1.8;
private var glow:GlowFilter;
private var tags:Array;
private var tag_num:uint;
private var bv:BasicView;
private var tagArray:Array;
private var tagContainer:DisplayObject3D;
public function FlashTest() {
// write as3 code here..
init ();
}
private function init ():void {
glow = new GlowFilter (0x003366, 1, 8, 8, 2, BitmapFilterQuality.LOW, true, false);
tags = ["Mustafa Kose","Hakkımızda","İletisim","Anasayfa","Resimler","Videolar","Neden-Network-Marketing","Başarısız Olmak","Kirletenler","Yanlis Anlasiliyor","Network Marketing","Mega Holdings","Enes Olgun","İbrahim Duran","Mesut Opengin","Eyup Seven","Mehmet Altog","Oguzhan Nalbas","Ilker Sezgin","Hamza Demirel","Yunus Cetin","Ugur Demirel","www.jikozden.net","Ahmet Akkaya","Sibel Demirel","Ferhat Irgin","Ali Karkin","Can Karakose","Arda Colpan","Mehmet Veysel Aslan","Omer İsler","Asli Karakas","Yucel Caglayan","Cemile Inan","Rukiye Aslan","Turker Arabacioglu","Asil Duran","Nuri Tuncay","Okan Celik","Mehmet Darici""];
tag_num = tags.length;
tagArray = [];
tagContainer = new DisplayObject3D ("tag_container");
tagContainer.x = -radius * 0.15;
tagContainer.y = radius * 0.04;
bv = new BasicView (stage.stageWidth, stage.stageHeight, true, true);
bv.viewport.interactive = true;
bv.scene.addChild (tagContainer);
bv.camera.z = -2* radius;
bv.camera.zoom = 35;
bv.startRendering ();
addChild (bv);
buildTags ();
addEventListener (Event.ENTER_FRAME, enterFrameHandler);
}
private function buildTags ():void {
var i:uint;
for (i = 0; i < tag_num; i++) {
// 2D
var txt:TextField = new TextField ();
txt.text = tags[i];
txt.filters = [new BlurFilter(1.3, 1.3)];
var txtW:Number = txt.textWidth + 14;
var txtH:Number = txt.textHeight + 14;
var bitmap:BitmapData = new BitmapData (txtW, txtH, true, 0x01FFFFFF);
bitmap.draw (txt);
var phi:Number = Math.acos((2 * (i + 1) - 1) / tag_num - 1);
var theta:Number = Math.sqrt(tag_num * Math.PI) * phi;
// 3D
var material:BitmapParticleMaterial = new BitmapParticleMaterial (bitmap);
material.interactive = true;
material.smooth = smoothing;
var tag:Particle = new Particle (material, scale, 0, 0, 0);
var tagHolder:Particles = new Particles ("tag_");
tagHolder.addParticle (tag);
tagHolder.x = radius * Math.cos (theta) * Math.sin (phi);
tagHolder.y = radius * Math.sin (theta) * Math.sin (phi);
tagHolder.z = radius * Math.cos (phi);
tagHolder.useOwnContainer = true;
tagHolder.autoCalcScreenCoords = true;
tagHolder.addEventListener (InteractiveScene3DEvent.OBJECT_OVER, objectOverHandler);
tagHolder.addEventListener (InteractiveScene3DEvent.OBJECT_OUT, objectOutHandler);
//tagHolder.addEventListener (InteractiveScene3DEvent.OBJECT_PRESS, objectPressHandler);
tagContainer.addChild (tagHolder);
tagArray.push (tagHolder);
}
}
private function objectOverHandler (e:InteractiveScene3DEvent):void {
bv.viewport.buttonMode = true;
e.target.filters = [glow];
}
private function objectOutHandler (e:InteractiveScene3DEvent):void {
bv.viewport.buttonMode = false;
for (var j:uint = 0; j < tag_num; j++) {
tagArray [j].filters = [];
}
}
private function enterFrameHandler (e:Event):void {
tagContainer.rotationX += (mouseY - stage.stageHeight * 0.03) * 0.001;
tagContainer.rotationY += (mouseX - stage.stageWidth * 0.03) * 0.001;
for (var j:uint = 0; j < tag_num; j++) {
tagArray[j].alpha = minAlpha + (1 - minAlpha) * (1 - (tagArray[j].screen.z - radius) / (2 * radius));
}
}
}
}