- 2009-05-29 (金) 14:03
- ActionScript3.0 | PaperVision3D
ClockMaker Blog内のPapervision3Dチュートリアルが、終了しましたね。
Yasuさん、お疲れ様でした。そして、ありがとうございました。
今回も以下の記事を参考にさせて頂き、作ってみました。
Cameraの設定やステージをドラッグする等の処理は、PV3D Vol.05に。3Dオブジェクトをクリックする処理は、PV3D Vol.06に詳しく書かれていますので、そちらをお読みください。
で、自分でも(機能を)付け足してみようかな? ということで、以下を実装。
- Particleを矩形から円へ
- キーボードの矢印キーで、Cubeを動かす
- 3Dオブジェクトをクリックしたら、Cubeが拡大&縮小する
前回のエントリに、ソースを付け加えていった感じですので、Cubeの作成方法&画像の貼付け等は省略させて頂きます。
Particleの変更
連載記事の方では、Particleは矩形でした。
var particleMat:ParticleMaterial = new ParticleMaterial(0xFFFFFF, 1);
ParticleMaterialクラスを見てみると、三番目の引数を省略すると、初期値は0が適用されるようになっています。
0は矩形になります。
そこで、「形を変えてみるか!」ということで、三番目の引数を1に設定してみました。
var particleMat:ParticleMaterial = new ParticleMaterial(0xFFFFFF, 1, 1);
このように(1と)設定することで、矩形→円に変わってくれます。
キーボードでの操作
//KeyboardEvent.KEY_DOWNを受けての処理
switch (e.keyCode ) {
case Keyboard.UP:
cube.z -= 5;
break;
case Keyboard.DOWN:
cube.z += 5;
break;
case Keyboard.LEFT:
cube.x += 5;
break;
case Keyboard.RIGHT:
cube.x -= 5;
break;
default:
}
ちょっと3D空間でCubeを動かしてみたかったので、こんなことをしてみました。
あまり意味はありません。
クリックしたら拡大&縮小
//flagを設定しておく
var flg:Boolean = true;
cube.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,clickHandler);
//Cubeがクリックされた時
function clickHandler(e){
if(flg == true){
Tweener.addTween(cube,{scaleX:2,time:1,transition:"easeInOutBounce"});
Tweener.addTween(cube,{scaleY:2,time:1,transition:"easeInOutBounce"});
Tweener.addTween(cube,{scaleZ:2,time:1,transition:"easeInOutBounce"});
mytxt.text = "でっかくなっちゃった!";
flg = false;
}else{
Tweener.addTween(cube,{scaleX:1,time:1,transition:"easeInOutBounce"});
Tweener.addTween(cube,{scaleY:1,time:1,transition:"easeInOutBounce"});
Tweener.addTween(cube,{scaleZ:1,time:1,transition:"easeInOutBounce"});
flg = true;
mytxt.text = "";
}
}
最初、拡大&縮小はこんなコードを書いてました。
import caurina.transitions.properties.DisplayShortcuts;
//TweenerのDisplayShortcutsを使えるようにしておく
DisplayShortcuts.init();
(略)
Tweener.addTween(cube,{_scale:2,time:1,transition:"easeInOutBounce"});
これでパブリッシュしてみると、z方向に拡大してくれませんでした。(そりゃ、そうだ!)
で、どうしたものかと…
とりあえず、「scaleX、scaleYがあるんだから、scaleZもいけるんじゃない?」と思い、試してみたら、上手くいってしまいまして…
で、何故上手くいったのか? をきちんと理解するため、親のクラスをどんどん遡っていくと…
DisplayObject3Dに_scaleX、_scaleY、_scaleZがありました!
こいつを継承してるから、上手くいったのねぇ…と納得。
ソースを書くだけでなく、継承元のクラスを見ていくときも(FlashIDEだと)辛いですねぇ…
FlashDevelopのありがたみを実感しました。
と、まぁ、PaperVision3Dに詳しくない僕でも、こんなものがサクッと作れるようになったのは、Yasuさんの連載記事のお陰です。
改めまして、ありがとうございました!
- Newer: FIVe3DのBitmap3Dで気になったこと
- Older: FlashDevelopをRC2からRC4へ
Comments:0
Trackbacks:1
- Trackback URL for this entry
- http://flabaka.com/blog/wp-trackback.php?p=1059
- Listed below are links to weblogs that reference
- Cubeをあれこれ動かしてみる from flabaka
- pingback from 1/22 papervision3D メモ | albatrus 10-01-22 (金) 13:54
-
[...] ParticleMaterialの引数がイマイチわからなかったので調べて見ると、flabakaさんの記事に詳しく載っていました。 第一引数は色の指定。 残りの引数はMaterialの形を決める引数みたいです。 Par [...]