【问题标题】:How do I get Hit Detection to work in Flash?如何让命中检测在 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() 在哪里调用?

标签: actionscript-3 flash-cs6


【解决方案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);不断检查碰撞
猜你喜欢
  • 2018-07-31
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 2021-08-20
  • 1970-01-01
  • 2012-11-24
  • 2011-08-11
相关资源
最近更新 更多