[練習]papervision3D,Tweener,文字
forked from package土台用 (diff: 97)
ActionScript3 source code
/**
* Copyright Tamanegi_kenshi ( http://wonderfl.net/user/Tamanegi_kenshi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/9lVZ
*/
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.materials.special.Letter3DMaterial;
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 caurina.transitions.Tweener;
public class PVdemo extends Sprite {
public var viewport:Viewport3D;
public var scene:Scene3D;
public var camera:Camera3D;
public var renderer:BasicRenderEngine;
public var letterformat:Letter3DMaterial;
public var textArr:Array=new Array();
private var angle:int=0;
private var isClick:Boolean=false;
private var myName:String="ulfuls";
private var sugatoArr:Array=["GEORGIA","MAX","COFFEE"];
private var sugatoNum:int=sugatoArr.length;
public function PVdemo() {
viewport = new Viewport3D(stage.stageWidth, stage.stageHeight);
addChild(viewport);//viewportを表示ツリーに追加
renderer = new BasicRenderEngine();
scene = new Scene3D();
camera = new Camera3D();
//文字の設定 引数は色コード・透過度
for(var i:int=0;i<sugatoNum;i++){
var ookisa:int=Math.floor(Math.random()*20);
letterformat = new Letter3DMaterial(Math.random()*0xffffff,1);
letterformat.interactive;
letterformat.doubleSided = true;
//表示文字内容の設定
//引数は表示文字・フォント・Letter3DMaterial
var textdata:Text3D = new Text3D(sugatoArr[i], new HelveticaBold() , letterformat);
scene.addChild(textdata);
textdata.x=-250+i*100;
textArr.push(textdata);
}
addEventListener(Event.ENTER_FRAME,onEnter);
stage.addEventListener(MouseEvent.CLICK,onClick);
}//
private function onEnter(event:Event):void{
angle-=2;
for(var i:int=0;i<sugatoNum;i++){
var radian:Number=(360/sugatoNum*i+angle)*Math.PI/180;
textArr[i].z=Math.sin(radian)*500;
textArr[i].x=Math.cos(radian)*500;
textArr[i].y=Math.sin(radian)*50;
textArr[i].rotationY = (360/sugatoNumi+ angle) -90;
renderer.renderScene(scene,camera,viewport);
}//fori
}//onEnter
private function onClick(event:MouseEvent):void{
if(isClick==false){
for(var i:int=0;i<sugatoNum;i++){
var scale:int=Math.floor(Math.random()*8+2);
var rote:int=Math.floor(Math.random()*1000);
Tweener.addTween(textArr[i],{scaleX:scale,scaleY:scale,rotationZ:rote,transition:"easeInOutBack",delay:i,time:1});
}//for i
isClick=true;
}else{
Tweener.removeAllTweens();
for(var j:int=0;j<sugatoNum;j++){
Tweener.addTween(textArr[j],{scaleX:1,scaleY:1,rotationZ:0,transition:"easeOutQuart",time:1});
}//for j
isClick=false;
}//if
}//onClick
}}
