是否可以显示精灵的另一个实例?我想要做的是反映一个动画精灵 到目前为止我所拥有的是我的Sprite,称为“canvas”,它通过使用AS3在其中进行动画制作。而我想要做的就是展示它翻转的副本,在它下面看起来像一个反射。我尝试了以下代码,但没有运气,它只是隐藏了一切?...
addChild(canvas);
var reflection:Sprite = new Sprite();
addChild(reflection);
reflection.addChild(canvas);
为什么这段代码不起作用的任何想法?或者你有更好的方法来解决这个问题 感谢
答案 0 :(得分:3)
您可以使用BitmapData
。
班级成员:
// flip vertically and shift by 100 (insert your canvas size)
private var reflect:Matrix = new Matrix(1, 0, 0, -1, 0, 100);
// instanciate BitmapData with 100x100 size (insert your canvas size),
// filled with black but with 100% transparancy, it's an
// ARGB value (0 == 0x00000000)
private var reflectionData:BitmapData = new BitmapData(100, 100, true, 0);
private var reflection:Bitmap = new Bitmap(reflectionData);
INIT:
// you might want to draw canvas already on startup
reflectionData.draw(canvas, reflect);
reflection.x = canvas.x;
reflection.y = canvas.y + canvas.height;
addChild(reflection);
on animation / redraw
// clear to transparency
reflectionData.fillRect(reflectionData.rect, 0);
// draw the current canvas with matrix applied
reflectionData.draw(canvas, reflect);
答案 1 :(得分:1)
你几乎和这个答案中的问题完全相同:
Adding multiple instances of a Sprite?
这将告诉您为什么现有代码无效。
至于如何完成你想做的事情,我只想使用一个位图对象来绘制原始的sprite。您可以使用传递给Bitmap.draw函数的Matrix对象作为参数来执行此操作。创建矩阵时,只需将垂直维度的比例值1反转,并将其设置为-1。这是一个如何执行此操作的教程:
http://www.adobe.com/devnet/flash/articles/reflect_class_as3.html
他们可能没有使用矩阵变换,可能只是反转包含bitmapdata的精灵的比例,我不确定我没有阅读完整的教程。我所知道的是本教程将为您提供您想要做的事情(有一个例子)。