您可以将许多 C++ 技能应用到您的 AS3 项目中。
有很多技巧。很高兴你提出将代码放在主时间线上。我建议不要将代码放在时间线上(这在 AS2 程序中太常见了,而使用 AS3 你可以完全避免它)我建议将每个对象视为一个单独的类。例如,您正在应用鼠标单击代码的影片剪辑可能是使用其自己的类创建的对象。假设 MovieClip 是一个球的图形。您应该创建一个扩展(继承)MovieClip 类的“Ball”类,并在其中处理 mouseclick 事件:
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class myObjects.Ball extends MovieClip
{
public function Ball ()
{
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
private function mouseDownHandler(event:MouseEvent):void
{
// Code
}
}
}
然后,在库窗格中找到你的球的电影剪辑,右键单击它,属性,切换到高级模式,选中导出为 AS。现在,请注意您的 MovieClip 是如何将 MovieClip 类作为其基类的?您将不再需要这个,因为您的 Ball 类扩展了 MovieClip 类。所以在 Class 字段中写入“myObjects.Ball”并清除 Base 类字段。如果您编写了 Flash IDE 可以找到的命名空间 Ball 类的路径,您应该会看到一个绿色复选标记。
现在您的 Ball 类将使用该 MovieClip,因此当您在主类中创建 Ball 的新实例时,您可以像使用 MovieClip 一样使用它并将其动态附加到舞台上。或者,您可以通过手动拖动 Ball MovieClip 将其添加到时间轴中。
扩展一个我解释的类是AS3版本的'Inheritence'(Ball类继承了MovieClip类)。您还可以使用其他 OO 概念,例如 polymorphism 和封装。您应该尽可能将代码封装到单独的类中。假设您的项目中有几种不同类型的球 MovieClip,并且您希望 Ball 类成为 Soccer ball、Pool ball 和 Baseball 的父类。这些子类中的每一个都可以扩展 Ball 类。我发现对大型项目有用的另一件事是创建一个静态类来处理我的应用程序的所有事件。因为我将它定义为public static class,所以我可以将它导入到我的每个类中,并且它的变量只在应用程序期间创建一次。这可能非常有用。
我还在类中创建了自己的伪析构函数,以努力像 c++ 一样使用 AS3。最简单的方法是在销毁对象实例之前调用伪析构函数。我确实让它在一个应用程序中自动发生,所以如果这让任何人感兴趣,我可以追踪代码。但 AS3 在后台处理垃圾收集,通常不需要析构函数,但也许我只是认为不需要它,因为我在 AS3 编程中养成的坏习惯太久了。
就我个人而言,我认为你越是努力在 AS3 中开发应用程序,就好像你在使用 C++ 开发一样,它会变得越有趣,你的代码就越可重用。坚持下去.. 很快你就会得到一堆乱七八糟的动作脚本文件,而不是一堆乱七八糟的动作脚本文件。哈哈。有点双刃剑,但是whatevs。