如何使movieClip的alpha部分不可点击(actionscript starling)?

如何使movieClip的alpha部分不可点击(actionscript starling)?,actionscript,air,flash-builder,flashdevelop,Actionscript,Air,Flash Builder,Flashdevelop,我用的是椋鸟。 我不知道如何使位图的alpha部分不可点击——假设我有一只兔子在中间,alpha在周围 首先,我嵌入位图: [Embed(source="assets/stuff.xml", mimeType="application/octet-stream")]public static const Axml:Class; [Embed(source="assets/stuff.png")]public static const Apng:Class; 然后创建位图atlass(精灵表)

我用的是椋鸟。 我不知道如何使位图的alpha部分不可点击——假设我有一只兔子在中间,alpha在周围

首先,我嵌入位图:

[Embed(source="assets/stuff.xml", mimeType="application/octet-stream")]public static const Axml:Class;
[Embed(source="assets/stuff.png")]public static const Apng:Class; 
然后创建位图atlass(精灵表):

我制作了一个MovieClip并向其中添加位图,如下所示:

var movie:MovieClip = new MovieClip(atlas.getTextures("rabbit_run_"), 18);
addChild(movie);
movie.play();


starling.core.Starling.juggler.add(movie);
但当我点击它时,即使是在阿尔法部分的电影里,Lip也会变成“点击”。 我只需要兔子本身是可点击的,而不是在它周围


如何使alpha不可点击?谢谢

1:您不能使图像在一个区域可单击,而在另一个区域不可单击。但你们可以在鼠标下得到像素的颜色,忽略透明像素上的斑点

import flash.events.MouseEvent;
import flash.display.BitmapData;

var rabbitBitmap:BitmapData = new BitmapData(rabbit.width, rabbit.height, true, 0xFFFFFFFF);
rabbitBitmap.draw(rabbit);

addEventListener(MouseEvent.MOUSE_MOVE, mmh)
rabbit.addEventListener(MouseEvent.CLICK, mch)
rabbit.buttonMode = true;

function mmh(e:MouseEvent):void {
  rabbit.useHandCursor = getAlpha() != 255;
}

function mch(e:MouseEvent):void {
  if (getAlpha() != 255) {
    // ... do someth
  }
}

function getAlpha ():int {
  var rgba:uint = rabbitBitmap.getPixel32(rabbit.mouseX, rabbit.mouseY);
  return rgba & 0xff;
}
2:为您的兔子使用矢量图形:)

import flash.events.MouseEvent;
import flash.display.BitmapData;

var rabbitBitmap:BitmapData = new BitmapData(rabbit.width, rabbit.height, true, 0xFFFFFFFF);
rabbitBitmap.draw(rabbit);

addEventListener(MouseEvent.MOUSE_MOVE, mmh)
rabbit.addEventListener(MouseEvent.CLICK, mch)
rabbit.buttonMode = true;

function mmh(e:MouseEvent):void {
  rabbit.useHandCursor = getAlpha() != 255;
}

function mch(e:MouseEvent):void {
  if (getAlpha() != 255) {
    // ... do someth
  }
}

function getAlpha ():int {
  var rgba:uint = rabbitBitmap.getPixel32(rabbit.mouseX, rabbit.mouseY);
  return rgba & 0xff;
}