3

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();

        }

    }
}

}

4

1 に答える 1

0

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 イベントによってトリガーされることを確認することです。

于 2012-11-16T21:29:56.357 に答える