您可以将许多 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
}
}
}
然后,在“库”窗格中找到球的 MovieClip,右键单击它,“属性”,切换到“高级”模式,选中“导出为 AS”。现在,请注意您的 MovieClip 是如何引用 MovieClip 类作为其基类的?您不再需要这个,因为您的 Ball 类扩展了 MovieClip 类。因此,在 Class 字段中写入“myObjects.Ball”并清除 Base 类字段。如果您编写了 Flash IDE 可以找到的命名空间 Ball 类的路径,您应该会看到一个绿色的复选标记。
现在,您的 Ball 类将使用该 MovieClip,因此当您在主类中创建 Ball 的新实例时,您可以像使用 MovieClip 一样使用它并将其动态附加到舞台。或者,您可以通过手动拖动 Ball MovieClip 将其添加到时间线中。
我解释的扩展类是 AS3 版本的“继承”(Ball 类继承了 MovieClip 类)。您还可以使用其他 OO 概念,例如,多态性 http://www.developria.com/2009/09/as3-object-oriented-concepts-p.html和封装。您应该尽可能将代码封装到单独的类中。假设您的项目中有几种不同类型的球 MovieClip,并且您希望 Ball 类成为足球、台球和棒球的父类。每个子类都可以扩展 Ball 类。我发现对大型项目有用的另一件事是创建一个静态类来处理我的应用程序的所有事件。因为我将它定义为public static class
我可以将它导入到我的每个类中,并且它的变量在应用程序的持续时间内仅创建一次。这非常有用。
我还在类中创建了自己的伪析构函数,以便像 C++ 一样使用 AS3。实现此目的的最简单方法是在销毁对象的实例之前调用伪析构函数。我确实让它在一个应用程序中自动发生,所以如果有人对此感兴趣,我可以追踪代码..但是 AS3 在幕后处理垃圾收集,通常不需要析构函数,但也许我只是认为不需要,因为由于长时间使用 AS3 编程,我养成了坏习惯。
就我个人而言,我认为你越努力在 AS3 中开发应用程序,就像在 C++ 中开发一样,它就会变得越有趣,你的代码就越可重用。坚持下去..很快你就会得到一堆动作脚本文件,而不是一堆乱七八糟的代码,哈哈..有点双刃剑,但又怎么样。