In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: forked from: forked from: forked from: forked from: 3D tag cloud

Get Adobe Flash player
by slmdidim 18 Apr 2015

    Talk

    slmdidim at 18 Apr 2015 13:53
    deneme
    Embed
/**
 * 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));
            }
        }
    }
}