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

Actionscript 3 仅检测与透明图像可见部分的碰撞(AS3),actionscript-3,Actionscript 3,我有一个透明的图像和一个正方形。我想检测正方形何时与图像发生碰撞。然而,由于图像是透明的,它仍然会检测到它与透明像素的碰撞。所以,经过一些阅读,我尝试使用BitmapData,这是我以前从未使用过的。因此,它不起作用。老实说,我没想到下面的代码会起作用。我写这封信只是想让你知道我想做什么,以及我想怎么做 这是我的密码: package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.dis

我有一个透明的图像和一个正方形。我想检测正方形何时与图像发生碰撞。然而,由于图像是透明的,它仍然会检测到它与透明像素的碰撞。所以,经过一些阅读,我尝试使用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");
        }
    }
}
有人知道我怎样才能让它只在正方形与图像可见部分碰撞时检测到吗?
非常感谢。

除非您有个人原因希望自己实现此功能,否则我建议您使用Corey O'Neil的碰撞检测套件:


除非您有个人原因想自己实现此功能,否则我建议您使用Corey O'Neil的碰撞检测套件:


谢谢你,拉胡尔。那套装备可以满足我的需要。:)谢谢,拉胡尔。那套装备可以满足我的需要。:)