0

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

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

4

3 回答 3

1

如果您要使用动画剪辑/精灵内部的图形类进行绘制,您需要将其绘制到位图并显示位图而不是动画剪辑。影片剪辑只能保存这么多矢量信息,即使您在某些东西上绘制,使用 Graphics 类创建的形状实际上仍然存在。您会发现,如果您使用诸如 Doob 先生的 Stats 类之类的东西来跟踪您的帧速率,那么当您开始填充 MovieClip 时,fps 将会直线下降。解决方案是使用 BitmapData 的 draw() 方法并将影片剪辑中的内容复制到您正在显示的位图中。创建位图时,您必须将其链接到 BitmapData。每次你调用 draw 它都会为你更新位图(这很好)。

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

于 2010-03-04T10:28:28.810 回答
0

您必须在影片剪辑内绘制,然后移动该影片剪辑。图纸实际上是绑定到对象本身的,所以你不能独立地移动它们。因此,只需制作一个容器,在其上绘制,然后在另一个剪辑中移动您的容器。

于 2010-03-03T22:51:25.117 回答
0

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

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

于 2010-03-03T10:19:22.643 回答