0

我正在使用 Starling。我不知道如何使位图的 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; 

然后创建位图图集(spritesheet):

var tx1:Texture = Texture.fromBitmap(new Apng());
var xm1:XML = XML(new Axml());
var atlas:TextureAtlas = new TextureAtlas(tx1, xm1);

我制作了一个 MovieClip 并像这样向它添加位图:

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


starling.core.Starling.juggler.add(movie);

但是当我点击它时,即使在 alpha 部分,movieClip 也会变成“点击”。我只需要兔子本身是可点击的,而不是在它周围!

如何使 alpha 不可点击?谢谢

4

1 回答 1

1

1:您不能使图像在一个区域可点击而在另一区域不可点击。但是您可以在鼠标下获得像素的颜色并忽略透明像素上的 ckicks

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:为你的兔子使用矢量图形 :)

于 2013-03-01T06:31:49.587 回答