flash on 2009-2-4 boo06 forked:4favorite:2lines:147license : All rights reserved modified : 2009-02-04 20:01:13 Embed Tweet package { import caurina.transitions.Tweener; import flash.display.Sprite; import flash.events.Event; import flash.filters.BlurFilter; import flash.utils.setInterval; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.special.Letter3DMaterial; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.typography.Text3D; import org.papervision3d.typography.fonts.HelveticaBold; import org.papervision3d.view.Viewport3D; import org.papervision3d.view.layer.ViewportLayer; [SWF(width="300", height="300", backgroundColor="0xffffff", frameRate="40")] public class PV3D_sample03 extends Sprite { private var container:Sprite; private var viewport:Viewport3D; private var scene:Scene3D; private var camera:Camera3D; private var render:BasicRenderEngine; private var rootNode:DisplayObject3D; private var words1:Text3D; private var words2:Text3D; private var words3:Text3D; private var theta:Number; private var delayTime:Number; private var WordMoveType:Number; private const zoom:Number=20; private const focus:Number=40; private const distance:Number=600; public function PV3D_sample03() { theta=0; WordMoveType=0; delayTime=0; container=new Sprite(); addChild(container); container.x=stage.stageWidth / 2; container.y=stage.stageHeight / 2; viewport=new Viewport3D(0, 0, true, true); scene=new Scene3D(); camera=new Camera3D(); render=new BasicRenderEngine(); rootNode=scene.addChild(new DisplayObject3D("rootNode")); addChild(viewport); camera.target=DisplayObject3D.ZERO; camera.zoom=zoom; camera.focus=focus; var mat:Letter3DMaterial=new Letter3DMaterial(); mat.fillColor=0x000000; mat.doubleSided=true; mat.doubleSided=mat.interactive=true; words1=new Text3D("JUNE '86", new HelveticaBold(), mat); words2=new Text3D("june86.com", new HelveticaBold(), mat); words3=new Text3D("Directed by dai", new HelveticaBold(), mat); rootNode.addChild(words1); rootNode.addChild(words2); rootNode.addChild(words3); words1.y=40; words2.y=0; words3.y=-40; words1.z=0; words2.z=-20; words3.z=40; words1.x=60; words2.x=-20; words1.scale=words2.scale=words3.scale=0.4; dispersionWords(words1); dispersionWords(words2); dispersionWords(words3); setInterval(moveWords, 10000); addEventListener(Event.ENTER_FRAME, onFrame); } private function dispersionWords(words:Text3D):void { for each(var word:DisplayObject3D in words.letters) { word.extra={x:word.x, y:word.y, z:word.z}; word.x=word.y=word.z=word.scale=0; Tweener.addTween(word, {scale:1, x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:3, delay:2 * Math.random() + 1}); } } private function moveWords():void { if (WordMoveType % 2 == 0) { resetWords(words1); resetWords(words2); resetWords(words3); delayTime=0; WordMoveType++; } else { breakWords(words1); breakWords(words2); breakWords(words3); WordMoveType++; } } private function resetWords(words:Text3D):void { for each(var word:DisplayObject3D in words.letters) { Tweener.addTween(word, {x:word.extra.x, y:word.extra.y, z:word.extra.z, rotationX:0, rotationY:0, rotationZ:0, time:1, transition:"easeOutBounce", delay:delayTime}); Tweener.addTween(word, {rotationY:720, time:1, delay:delayTime + 2}); delayTime+=0.1; } } private function breakWords(words:Text3D):void { for each(var word:DisplayObject3D in words.letters) { Tweener.addTween(word, {x:Math.random() * 2000 - 1000, y:Math.random() * 2000 - 1000, z:Math.random() * 2000 - 1000, rotationX:Math.random() * 360, rotationY:Math.random() * 360, rotationZ:Math.random() * 360, time:4, delay:3 * Math.random()}); } } private function onFrame(e:Event):void { camera.x=distance * Math.sin(theta * Math.PI / 180); camera.z=distance * Math.cos(theta * Math.PI / 180); theta+=0.2; setBlur(words1); setBlur(words2); render.renderScene(scene, camera, viewport); } private function DistanceFromCamera(obj:DisplayObject3D):Number { var vecX:Number=obj.sceneX - camera.x; var vecY:Number=obj.sceneY - camera.y; var vecZ:Number=obj.sceneZ - camera.z; return Math.sqrt((vecX * vecX) + (vecY * vecY) + (vecZ * vecZ)); } private function setBlur(words:Text3D):void { for each(var word:DisplayObject3D in words.letters) { var vpl:ViewportLayer=word.createViewportLayer(viewport, true); var d:Number=Math.abs(DistanceFromCamera(word) - distance) / 40; vpl.filters=[new BlurFilter(d, d, 1)]; } } } } Code Fullscreen Preview Fullscreen 3pt initt : [pv3d][typo][text] [pv3d][typo][text] viewport letters rotationY container scene rotationZ rotationX BasicRenderEngine doubleSided Viewport3D focus Tweener.addTween time extra scale sceneY sceneZ sceneX renderScene interactive sort new page view favorite forked pv299 forked from: flash on 2009-2-4.. AFFA forked:0 favorite:0lines:147 (diff:1) pv0 forked from: flash on 2009-2-4.. Suresh_veerati forked:0 favorite:0lines:147 (diff:4) pv368 forked from: flash on 2009-2-4.. AFFA forked:1 favorite:0lines:147 (diff:2) pv393 forked from: flash on 2009-2-4.. hhhhhhjjj forked:1 favorite:0lines:146 (diff:4)