|
kiri_fla
登録日時: 2009年12月19日(土) 18:19 記事: 2
|
 マウスドラッグ操作について分からない処理
環境:WinXp CS5 Papervision3D_2.1.932 jiglibflash fp10 r128
はじめまして。今回、jiglibflashにてドラッグ操作を試みているのですが、処理内容が分からず困ってす。ほとんどPVのことだと思いますがよろしくお願いします。
*jiglibでのオブジェクト作成については省きます。
ドラッグ操作の一連はダウンロードしたサンプルファイルの一部です。
private var onDraging:Boolean = false; private var currDragBody:RigidBody; private var dragConstraint:JConstraintWorldPoint; private var startMousePos:Vector3D; private var planeToDragOn:Plane3D; private var physics:Papervision3DPhysics;
コンストラクタ内
Mouse3D.enabled = true; mouse3D = viewport.interactiveSceneManager.mouse3D;
*マウスをプレスしたとき private function handleMousePress(event:InteractiveScene3DEvent):void{ onDraging = true; startMousePos = new Vector3D(mouse3D.x, mouse3D.y, mouse3D.z); currDragBody = PhysicsSystem.getInstance().bodys[findSkinBody(event.displayObject3D)]; planeToDragOn = new Plane3D(new Number3D(0, 0, -1), new Number3D(0, 0, -startMousePos.z)); var bodyPoint:Vector3D = startMousePos.subtract(currDragBody.currentState.position); dragConstraint = new JConstraintWorldPoint(currDragBody, bodyPoint, startMousePos); } *マウスを移動してるとき private function handleMouseMove(event:MouseEvent):void{ if (onDraging){ var ray:Number3D = camera.unproject(viewport.containerSprite.mouseX, viewport.containerSprite.mouseY); ray = Number3D.add(ray, new Number3D(camera.x, camera.y, camera.z)); var cameraVertex3D:Vertex3D = new Vertex3D(camera.x, camera.y, camera.z); var rayVertex3D:Vertex3D = new Vertex3D(ray.x, ray.y, ray.z); var intersectPoint:Vertex3D = planeToDragOn.getIntersectionLine(cameraVertex3D, rayVertex3D); dragConstraint.worldPosition = new Vector3D(intersectPoint.x, intersectPoint.y, intersectPoint.z); } }
*マウスを離したとき private function handleMouseRelease(event:MouseEvent):void{ if (onDraging){ onDraging = false; dragConstraint.disableConstraint(); currDragBody.setActive(); } }
上記の一連の流れの中でhandleMouseMoveのイベント処理内容が何をしているのか分かりません。 camera.unproject(viewport.containerSprite.mouseX, viewport.containerSprite.mouseY); の部分に関してはマウスの座標にも思えるんですが・・・camera.unprojectの取得する値はなんでしょうか?
またその後のNumber3D.addで加えている値の処理内容?? カメラの座標とどのような意味合いが・・
その後、Vertex3Dでカメラの座標を取得しているようですが、この処理がマウスの処理とどう関係しているのか?
planeToDragOn.getIntersectionLine(cameraVertex3D, rayVertex3D); の「getIntersectionLine」の意味とは??
さっぱりの為、質問内容がちぐはぐしていますが要するに「まずマウスの座標を取得してその後カメラとの位置を合わせるためget~のメソッドを使用してカメラの座標を取得する・・」 というようなマウスムーブの処理の過程が分からないのです。
ものすごくざっくりで申し訳ないのですが、どなたか処理の内容を詳しく説明していただけますでしょうか
|