バージョン2.0を少し前から触り始めています。去年(一昨年?)触った時と比べて実装が楽になっている印象です、、が、当時の事をほとんど忘れてしまっているので、実際はどうなんでしょう、、。

今回は、

・3D空間上の物体をクリックしてイベントを取得
・物体へオンマウスした際にマウスカーソルを変える

という基本的な部分について躓いたので、自分用コメントを付けて貼っておきます

 

package {

import flash.events.Event;

import org.papervision3d.view.BasicView;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.events.InteractiveScene3DEvent;

public class PV3DClickTest extends BasicView {

private var planeObj:Plane;

public function PV3DClickTest() {

viewport.interactive = true; // クリックイベントを取得する際に必要
viewport.buttonMode = true; // ボタンモードON

var material:ColorMaterial = new ColorMaterial(0);
material.interactive = true; // クリックイベントを取得する際に必要
material.doubleSided = true; // 裏返しになっても表示させる

planeObj = new Plane( material, 300, 300, 1, 1 );
planeObj.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onClick, false, 0, true);

scene.addChild(planeObj);

// render
startRendering();
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}

private function loop(e:Event):void {
planeObj.rotationY += 1;
}

public function onClick(e:InteractiveScene3DEvent):void {
trace(e.toString());
}
}
}

 

マテリアル毎にinteractiveプロパティでクリッカブルに設定できるが、それと同時にviewportにもinteractiveプロパティも設定しておかなくてはならない、というところが今回躓いた部分。あと、buttonModeプロパティはviewportで設定するようなので、ついでにサンプル内に記述しておきました。

Comments

Powered by Facebook Comments