2013-02-27 72 views
0

我正在使用Starling。 我无法弄清楚如何使位图不可点击的alpha部分 - 说我有一个兔子在中心和alpha周围。如何使movieClip的alpha部分不可点击(动作椋鸟)?

第一i-嵌入位图:

[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(s​​pritesheet):

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不可点击?谢谢

回答

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