我正在尝试在动作脚本中绘制图像,我将其设置为矩形内的BitmapFill。问题是,如果我将矩形移离原点(0,0),在我的情况下,我开始在(20,35)绘制矩形,位图背景不会跟随。背景始终绘制在(0,0)然后重复,所以我没有得到居中的图像,而是2个减半的图像。这是我的代码的样子:
public class PageTileRenderer extends VBox
{
private var sp:Shape;
[Embed(source="../../../../assets/content.png")]
private var contentIconClass:Class;
private var contentIcon:Bitmap = new contentIconClass ();
// ...
private function drawIcon():void{
sp.graphics.beginBitmapFill(contentIcon.bitmapData);
sp.graphics.drawRect(20, 35, 13, 13);
sp.graphics.endFill();
}
}
所以我的问题是如何移动背景填充原点。或者是否有另一种解决方案来将图像居中。
提前感谢您的帮助。
答案 0 :(得分:2)
您可以使用transformation matrix移动位图的原点。它可以作为参数传递给beginBitmapFill(使用现有代码):
private function drawIcon():void{
var matrix:Matrix = new Matrix();
matrix.translate(20, 35);
sp.graphics.beginBitmapFill(contentIcon.bitmapData, matrix);
sp.graphics.drawRect(20, 35, 13, 13);
sp.graphics.endFill();
}
您还可以使用其他Matrix方法旋转和缩放位图填充。
答案 1 :(得分:0)
private function init():void
{
loader = new Loader();
loader.load(new URLRequest("benny.jpg"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, action);
}
private function action (e:Event)
{
var bmpData:BitmapData = new BitmapData(180,220);
bmpData.draw(e.target.content);
var bmp:Bitmap = new Bitmap(bmpData);
with(bg.graphics){
beginFill(0xefefef,1);
drawRoundRect(0,0,300,300,3,3);
endFill();
}
addChild(bg);
bg.x = stage.stageWidth/2-bg.width/2;
bg.y = stage.stageHeight/2-bg.height/2;
bg.addChild(bmp);
bmp.x = bg.width/2-bmp.width/2;
bmp.y = bg.height/2-bmp.height/2;
}