您可以使用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