Home > ActionScript3.0 | PaperVision3D > Cubeをあれこれ動かしてみる

Cubeをあれこれ動かしてみる

ClockMaker Blog内のPapervision3Dチュートリアルが、終了しましたね。

Yasuさん、お疲れ様でした。そして、ありがとうございました。

今回も以下の記事を参考にさせて頂き、作ってみました。

動くCubeのデモを見る

Cameraの設定やステージをドラッグする等の処理は、PV3D Vol.05に。3Dオブジェクトをクリックする処理は、PV3D Vol.06に詳しく書かれていますので、そちらをお読みください。

で、自分でも(機能を)付け足してみようかな? ということで、以下を実装。

  1. Particleを矩形から円へ
  2. キーボードの矢印キーで、Cubeを動かす
  3. 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さんの連載記事のお陰です。

改めまして、ありがとうございました!

Comments:0

Comment Form
Remember personal info

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 [...]

Home > ActionScript3.0 | PaperVision3D > Cubeをあれこれ動かしてみる

Search
Feeds
Meta

Return to page top