バージョン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