您可以使用getColorBoundsRect找到你的BitmapData内的不同彩色像素的尺寸:
//some fake data
var yourBigBmd:BitmapData = new BitmapData(300, 300, false, 0);
yourBigBmd.fillRect(new Rectangle(10, 10, 30, 60), 0xFF0000);
//a little notch
yourBigBmd.fillRect(new Rectangle(10, 10, 10, 10), 0x00000);
var blackColor:uint = 0x000000;
var littleBmdBounds:Rectangle = yourBigBmd.getColorBoundsRect(0xFFFFFF, blackColor, false);
trace("littleBmdBounds: " + littleBmdBounds);
这将跟踪littleBmdBounds:(X = 10,Y = 10,W = 30,H = 60)
接下来,我们需要复制的内容是在这些边界进入一个新的BitmapData:
var littleBmd:BitmapData = new BitmapData(littleBmdBounds.width, littleBmdBounds.height, true, 0);
var mx:Matrix = new Matrix();
mx.translate(-littleBmdBounds.x, -littleBmdBounds.y);
littleBmd.draw(yourBigBmd, mx);
最后,使用门槛删除任何剩余的黑色,并使其透明:
var blackAlphaColor:uint = 0xFF000000;
var transparentColor:uint = 0x00000000;
littleBmd.threshold(littleBmd, littleBmd.rect, littleBmd.rect.topLeft, "==", blackAlphaColor, transparentColor)
非常感谢你,我可以看到这里的模式,所以我可以适应它我的需要:) – 2010-04-19 14:00:55