Papervision3D 2.0 クリックイベントを追加する
2009 年 12 月 22 日 火曜日バージョン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で設定するようなので、ついでにサンプル内に記述しておきました。
