定位使用Graphics Class绘制的Flash图形的问题

时间:2010-03-03 10:05:28

标签: flash actionscript-3 graphics flash-cs3

我正在使用Flash CS3构建一个简单的绘图应用程序。当用户单击按钮时,他们会选择特定的动画片段。单击舞台上的其他位置后,剪辑将被实例化并添加到光标位置的舞台上。我还添加了一个选项,可以单击添加的剪辑并在屏幕上拖动它。这一切都很好。

问题是我还希望能够通过Graphics类动态绘制和添加对象到舞台。每当我以这种方式添加对象时,无论我将它们放在舞台上的哪个位置,它们的x和y坐标始终为0,0。这使得定位这些图形非常有问题。我专门为这些动态绘制的图形创建了一个修改过的定位功能,虽然它确实“工作”,但它感觉不如动画片段对象的定位。我仍然在尝试优化这个功能,但在我看来,理想的解决方案是当放置在舞台中间时,如movieclip对象,图形具有非零坐标。是否有一些“解决方法”来实现这一目标?

3 个答案:

答案 0 :(得分:1)

如果您要使用movieclip / sprite内的图形类进行绘制,则需要将其绘制到位图并显示位图而不是动画片段。 Movieclips只能容纳如此多的矢量信息,即使你画了一些东西,用Graphics类创建的形状仍然存在。您会发现,如果您使用Mr Doob的Stats类跟踪您的帧速率,当您开始填充MovieClip时,fps将坠落。解决方案是使用BitmapData的draw()方法并将movieclip内部的内容复制到您正在显示的位图。创建位图时,您必须将其链接到BitmapData。每次你调用draw它都会为你更新Bitmap(这很好)。

我上周制作了一个绘画应用程序,所以我有这个问题的第一手经验。

答案 1 :(得分:0)

您可以使用矩阵类更改显示对象的注册点。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/geom/Matrix.html

答案 2 :(得分:0)

您必须在动画片段内绘制,然后移动该动画片段。图纸实际上与对象本身绑定,因此您无法独立移动它们。所以只需制作一个容器,在上面绘制,然后将容器移到另一个剪辑内。