仅检测与透明图像(AS3)的可见部分的碰撞

时间:2013-04-07 22:04:00

标签: actionscript-3

我有一个透明的图像和一个正方形。我想要检测广场何时与图像碰撞。但是,由于图像是透明的,它仍会检测到它与透明像素碰撞。所以,经过一些阅读后,我尝试使用BitmapData,这是我之前没有用过的。所以,它不起作用。说实话,我没想到下面的代码 工作。我刚刚写信告诉你我想做什么以及我想怎么做。

这是我的代码:

package 
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;

/**
 * Testing Transparency
 * @author Craig Jackson
 */

public class Main extends Sprite 
{
    public var square:Sprite;

    [Embed(source="../lib/TestTransparency.png")]
    public var TestTrans:Class;

    public var testTransBitmapData:BitmapData = new BitmapData(300, 30, true, 0);

    public var testTransBitmap:Bitmap = new TestTrans();

    public function Main():void 
    {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);
        startUp();
    }

    public function  startUp():void 
    {
        square = new Sprite();
        square.graphics.beginFill(0x666666);
        square.graphics.drawRect(0, 0, 50, 50);
        square.graphics.endFill();
        addChild(square);

        testTransBitmapData.draw(testTransBitmap);
        addChild(testTransBitmap);

        addEventListener(Event.ENTER_FRAME, enterFrame);
    }

    public function enterFrame(e:Event):void
    {
        square.x = mouseX;
        square.y = mouseY;

        if (square.hitTestObject(testTransBitmap))
        {
            trace("Touching");
        }
    }
}

任何人都知道如果只有当方块与图像的可见部分碰撞时才能检测到它? 非常感谢提前。

1 个答案:

答案 0 :(得分:1)

除非您有个人理由希望自己实施,否则我建议使用Corey O'Neil的碰撞检测套件:

https://code.google.com/p/collisiondetectionkit/