问题:今天接收到美术的资源,fla里的元件对齐方式都是在中间,如图 :
先把2个用到的类摘下来:
Bitmap(bitmapData:BitmapData = null, pixelSnapping:String = "auto", smoothing:Boolean = false)
pixelSnapping:控制Bitmap对象是否贴紧最近的像素
smoothing:控制是否对位图进行缩放时平滑化
BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
transparent:位图图像是否支持每个像素具有不同的透明度
fillColor:填充颜色
使用了下面的代码:item_就是这个元件啦!
var _bm:Bitmap = new Bitmap(new BitmapData(item_.width, item_.height, true, 0),"auto", true);
_bm.bitmapData.draw(item_);
可惜了此方法只绘画了部分,如图:
看了图片,小伙伴们都发现啦,draw():是从(0, 0)点开始绘画的,也就是元件的对齐点!
解决:目前我应用的2种方法
1.元件重新来一遍把,对齐方式是左上角,如图:
2.因为美术的资源太多的对齐点在中间,小弟只好选择用代码修改了,查看了下draw()的参数类型,第二个参数居然是矩阵!
小弟几个月前因为面试的关系还学习了几个小时的矩阵 ,上代码!
var _bm:Bitmap = new Bitmap(new BitmapData(item_.width, item_.height, true, 0), "auto", true);
var matrix:Matrix = new Matrix();
//原理应该是将中间对齐方式(0,0)的坐标平移了一半的宽和高,
matrix.tx = _item.width / 2;
matrix.ty = _item.height / 2;
_bm.bitmapData.draw(item_, matrix);
最后画出来的图就是完整的!