0

スターリングを使用しています。ビットマップのアルファ部分をクリックできないようにする方法がわかりません-中心にウサギがあり、周りにアルファがあるとします。

最初にビットマップを埋め込みます:

[Embed(source="assets/stuff.xml", mimeType="application/octet-stream")]public static const Axml:Class;
[Embed(source="assets/stuff.png")]public static const Apng:Class; 

次に、ビットマップ アトラス (スプライト シート) を作成します。

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

しかし、アルファ部分でもクリックすると、movieClipが「クリック」されます。うさぎの周りではなく、うさぎ自体をクリックできるようにする必要があります。

アルファをクリックできないようにする方法は? ありがとう

4

1 に答える 1

1

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: ウサギにはベクター グラフィックスを使用してください :)

于 2013-03-01T06:31:49.587 に答える