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

flash on 2009-2-8

Get Adobe Flash player
by moopee 08 Feb 2009
    Embed
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("The Go's", new HelveticaBold(), mat); 
words2=new Text3D("MIRROR GIRL", new HelveticaBold(), mat); 
words3=new Text3D("www.thegos.net/", 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)]; 
} 
} 
} 
}