3D tag cloud esabear forked:21favorite:18lines:94license : MIT License modified : 2009-08-12 12:10:32 Embed Tweet 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 = 5; private var radius:Number = 350; private var smoothing:Boolean = true; private var minAlpha:Number = 0.3; 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 = ["free","news","Cookie","practice","JavaScript","toy","life","something","LocalConnection","memo","MSN","funny", "ActionScript 3", "Food", "Book", "Photo", "favorite"]; tag_num = tags.length; tagArray = []; tagContainer = new DisplayObject3D ("tag_container"); tagContainer.x = -radius * 0.25; tagContainer.y = radius * 0.25; 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 = 20; 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.1, 1.1)]; var txtW:Number = txt.textWidth + 4; var txtH:Number = txt.textHeight + 4; 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.5) * 0.01; tagContainer.rotationY += (mouseX - stage.stageWidth * 0.5) * 0.01; for (var j:uint = 0; j < tag_num; j++) { tagArray[j].alpha = minAlpha + (1 - minAlpha) * (1 - (tagArray[j].screen.z - radius) / (2 * radius)); } } } } Code Fullscreen Preview Fullscreen qwertyui Antonos gaziya alwAYs k0rin hermit evilgglong matacat djankey skn siouxcitizen.. assen_nissen.. Jongkyu.Park.. : 3d 태그 클라우드 mikelito33bd.. : 3D Nate12 : papervision3D hacker_wi6gh.. : 3D filipsol : tagcloud lewis_c1986 : clever & effective in small spaces 3D cloud papervision3D tag tagcloud bitmap scale Particle material InteractiveScene3DEvent autoCalcScreenCoords interactive smooth BitmapFilterQuality.LOW Math.acos InteractiveScene3DEvent.OBJECT_OUT rotationY InteractiveScene3DEvent.OBJECT_OVER rotationX filters useOwnContainer alpha mouseY mouseX textWidth sort new page view favorite forked pv172 forked from: 3D tag cloud Adli.Omar forked:0 favorite:1lines:94 (diff:3) pv0 forked from: 3D tag cloud d.blommers forked:0 favorite:0lines:94 (diff:1) pv347 forked from: 3D tag cloud jackiey99 forked:4 favorite:0lines:94 (diff:1) pv644 forked from: 3D tag cloud from.. akagamirei forked:2 favorite:0lines:108 (diff:63) pv174 forked from: 3D tag cloud EngineerRiddick forked:0 favorite:0lines:94 (diff:2) pv480 forked from: 3D tag cloud EngineerRiddick forked:2 favorite:0lines:94 (diff:2) pv253 forked from: 3D tag cloud EngineerRiddick forked:0 favorite:0lines:94 (diff:2) pv153 forked from: 3D tag cloud EngineerRiddick forked:0 favorite:0lines:94 (diff:5) 1 2 3NEXT