读书人

AS3.0怎么裁剪复制在脚本中导入的图片

发布时间: 2012-03-09 16:54:57 作者: rapoo

AS3.0如何裁剪复制在脚本中导入的图片?
AS3.0里用new MovieClip建立剪辑(名称为“M1”),然后用loader将一幅100x100的外置图片导入,并用刚才建立的M1的addChild方法加载该loader,之后用stage的addChild方法把M1加载。
此时已能正常显示被导入的图片。

但如果要把这图片的从(5,5)开始的一个20x20的矩形部份裁剪下来复制到舞台的另一个地方,我却未能成功。
我的思路是做两个BitmapData(作为检验,故意设成不同背景色),然后用第一个BitmapData把M1需要裁剪的部份给draw下来,然后copyPixels到第二个BitmapData,再把第二个BitmapData推送给新建的Bitmap对象,再通过stage的addChild把Bitmap对象显示。

我的方法目前运行结果是,“第一个BitmapData把M1需要裁剪的部份给draw下来”这个过程失败,导致BitmapData之间复制时只是把背景色传了过去。

我尝试过使用M1.getChildAt(0)仍无法把源给截下来,请问该如何解决?

[解决办法]
看看这个。http://www.flashguru.co.uk/bitmapdataloadbitmap-gone-in-actionscript-3
[解决办法]
/** *//**
* 获取所裁剪区域的数据。所有像素信息
* @param source 源图数据
* @param rect 所有裁剪的区域
* @return BitmapData 裁剪出新图的数据
*/
public function getCutData(source:BitmapData,rect:Rectangle):BitmapData ...{
//存放裁剪出的新图片
var cutbitmapdata:BitmapData = new BitmapData(Math.floor(_rect.width),Math.ceil(_rect.height)) ;

//坐标转化,把坐标移到裁剪区域的位置,宽度和高度在cutbitmapdata里指定。
var matrix:Matrix = new Matrix(1, 0, 0, 1, -Math.floor(_rect.x), -Math.floor(_rect.y));

cutbitmapdata.draw(_bitmapdata, matrix);
return cutbitmapdata ;
}
看这个是否有帮助:
http://hereson.javaeye.com/blog/198139

读书人网 >Flash

热点推荐