如何让命中检测在 Flash 中工作?
Posted
技术标签:
【中文标题】如何让命中检测在 Flash 中工作?【英文标题】:How do I get Hit Detection to work in Flash? 【发布时间】:2012-11-05 13:58:51 【问题描述】:Ives 尝试了许多命中检测,但似乎没有一个对我有用。我试过 hittest hittestobject hitarea。当我的对象(即 a 或 b 影片剪辑完全进入 c 影片剪辑时,我希望 c 移动 300 x 方向。只要它在 c 影片剪辑中它可以工作,就不需要进行精确点检测。
package
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.media.Sound;
import flash.ui.Mouse;
public class bakingCake extends MovieClip
public function bakingCake()
// constructor code
var object:MovieClip = new MovieClip;
a.addEventListener(MouseEvent.MOUSE_DOWN,objectA);
b.addEventListener(MouseEvent.MOUSE_DOWN,objectB);
if (object.hitArea(c) == true)
c.x = 300;
function objectA():void
object = a;
object.addEventListener(MouseEvent.MOUSE_OVER,objectFun);
function objectB():void
object = b;
object.addEventListener(MouseEvent.MOUSE_OVER,objectFun);
function objectFun(event:MouseEvent):void
object.addEventListener(MouseEvent.MOUSE_DOWN,drag);
object.addEventListener(MouseEvent.MOUSE_UP,sDrag);
function drag(event:MouseEvent):void
object.startDrag();
function sDrag(event:MouseEvent):void
object.stopDrag();
【问题讨论】:
首先:这一切都在构造函数中还是只是复制粘贴错误?c
是什么?什么调用 hitArea 函数? objectA()
或 objectB()
在哪里调用?
【参考方案1】:
你试过 getBounds() 吗? 我建议条件:
if (c.getBounds(c.parent).containsRect(a.getBounds(c.parent))
|| c.getBounds(c.parent).containsRect(b.getBounds(c.parent)))
c.x = 300;
IMO 最好的方法是检查它是否由 ENTER_FRAME 事件触发,附加到任何对象。
【讨论】:
问题已解决,使用了stage.addEventListener(Event.ENTER_FRAME, applicationloop);不断检查碰撞以上是关于如何让命中检测在 Flash 中工作?的主要内容,如果未能解决你的问题,请参考以下文章