むらけんです。
いや~遂にCS3日本発売日も来月に決定し、米国版のトライアウト版も先日ダウンロード可能となりました。そして、明日はF-siteセミナーです。160人会場で立ち見が出そうな位大入です。来られる方はよろしくです。
さて、papervision3d第三回です。
今回からは早速ですがソースファイルはCS3版とさせていただきます。
球体をクリックしてみてください。そうすると。。。
import caurina.transitions.Tweener;
import org.papervision3d.core.proto.*;
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
// _______________________________________________________________________
// vars
var container : Sprite;
var scene : MovieScene3D;
var camera : FreeCamera3D;
var sphereObj:DisplayObject3D;
var togeFlag:Boolean=false;
// _______________________________________________________________________
// Constructor
ptest();
function ptest():void{
stage.frameRate = 60;
stage.quality = "MEDIUM";
stage.scaleMode = "noScale";
stage.align = StageAlign.TOP_LEFT;
this.addEventListener(Event.ENTER_FRAME, _enterframe);
this.stage.addEventListener(Event.RESIZE, onStageResize);
init();
}
// _______________________________________________________________________
// Init
function init():void{
//コンテナ生成
container = new Sprite();
addChild(container);
container.x = this.stage.stageWidth / 2;
container.y = this.stage.stageHeight / 2;
//シーン生成
scene = new MovieScene3D( container );
//カメラ設定
camera=new FreeCamera3D(1,1000);
//オブジェクト生成
var material : ColorMaterial;
material = new ColorMaterial(0x000000, 0.5);
//material.doubleSided = true;
material.lineColor = 0xcccccc;
material.lineAlpha = 1;
sphereObj = new Sphere(material,100,16,16);
scene.addChild(sphereObj);
for each(var i:* in sphereObj.geometry.vertices) {
i.extra={baseX:i.x,baseY:i.y,baseZ:i.z}
}
sphereObj.container.buttonMode=true;
sphereObj.container.addEventListener(MouseEvent.MOUSE_DOWN,toge);
}
// _______________________________________________________________________
// Event
function _enterframe(e:Event):void{
sphereObj.rotationY+=container.mouseX/100;
sphereObj.rotationX+=container.mouseY/100;
this.scene.renderCamera( camera );
}
function toge(e:MouseEvent){
var num:Number=1;
for each(var i:* in sphereObj.geometry.vertices) {
if(num%6==0){
if(!togeFlag){
Tweener.addTween( i, {
x :i.extra.baseX*4,
y :i.extra.baseY*4,
z :i.extra.baseZ*4,
time :2,
delay :Math.random(),
transition :"easeOutElastic"
} );
}else{
Tweener.addTween( i, {
x :i.extra.baseX,
y :i.extra.baseY,
z :i.extra.baseZ,
time :2,
delay :Math.random(),
transition :"easeOutElastic"
} );
}
}
num++;
}
togeFlag=!togeFlag;
}
// _______________________________________________________________________
// onStageResize
function onStageResize(e:Event):void{
this.container.x = this.stage.stageWidth / 2;
this.container.y = this.stage.stageHeight / 2;
}
GeometryObject3Dクラスを使用することで、頂点座標のコントロールが可能になります。
コンパイルにはFlash CS3及び papervision3dとTweenerのクラスライブラリが必要です。
ソースはこちら
▽免責事項▽
このサンプルを使用した場合、または使用できなかった等のいかなる損害も、
制作者 むらけん 及び F-site は、その責を負いません。
ご自身の責任においてご使用ください。
この記事へのコメント
●1.metalalive(2009年09月24日 12:09)
looking good~!