我试图在屏幕上绘制一些内容,然后将其复制到舞台上的位图上。
我以前已经这样做过,用程序绘制的形状如圆形,但当我使用库项目时,大多数源像素都会被切断。
这是我的代码 - 在另一个函数中,位图对象被添加到舞台上,我可以看到 copyPixels 工作,但正如我所说,仅复制一些像素。我尝试过使用矩形,但到目前为止还没有运气。
var s:StarAsset = new StarAsset();
s.x = e.stageX;
s.y = e.stageY;
s.scaleX = e.pressure * 10;
s.scaleY = e.pressure * 10;
s.rotation = Math.random() * 360;
var bms:BitmapData = new BitmapData(s.width + 6, s.height + 6, true, 0x00000000);
bms.draw(s);
var srect:Rectangle = new Rectangle();
srect.width = s.width + 6;
srect.height = s.height + 6;
var destpoint:Point = new Point(s.x, s.y);
bmcontainer.copyPixels(bms, srect, destpoint, null, null, true);
使用明星资产:
假设您正在舞台上位图传输到画布位图:
var canvas:BitmapData = new BitmapData(600, 600, true, 0x0);
var bitmap:Bitmap = new Bitmap(canvas, PixelSnapping.AUTO, true);
addChild(bitmap);
此实现将实例化您的StarAsset
,将其绘制到BitmapData
,然后随机变换绘制到画布上的每个副本的比例、位置和旋转:
makeStars();
function makeStars():void
{
// get the star asset
var s:StarAsset = new StarAsset();
// copy star asset to bitmap data
var bd:BitmapData = new BitmapData(s.width, s.height, true, 0x0);
bd.draw(s);
// draw 100 variants on BitmapData
for(var i:uint = 0; i < 100; i++)
{
var positionX:Number = Math.random() * 600;
var positionY:Number = Math.random() * 600;
var scale:Number = Math.random();
var angle:Number = Math.random() * 360;
var matrix:Matrix = new Matrix();
matrix.scale(scale, scale);
matrix.rotate(angle * Math.PI / 180);
matrix.translate(positionX, positionY);
canvas.draw(bd, matrix, null, null, null, true);
}
}
其产生:
或者这里绘制了 1,000 颗星星:
或者最后绘制 10,000 颗星星:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)