加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – 如何避免有凌乱的AS3代码

发布时间:2020-12-15 07:30:50 所属栏目:百科 来源:网络整理
导读:我已经使用ActionScript 3编程了一段时间,我注意到我的代码的自然进程似乎采取了一个巨型文档类的形式,其中有数十个成员变量,回调和句柄对象在舞台上.总之:这真是一团糟! 事实上,我真的没有看到它的方法(至少还没有).我在时间轴上使用不同的关键帧来表示应
我已经使用ActionScript 3编程了一段时间,我注意到我的代码的自然进程似乎采取了一个巨型文档类的形式,其中有数十个成员变量,回调和句柄对象在舞台上.总之:这真是一团糟!

事实上,我真的没有看到它的方法(至少还没有).我在时间轴上使用不同的关键帧来表示应用程序中的不同状态,而在时间轴上有一些代码(对于快速的东西,例如鼠标点击影片剪辑),大部分逻辑刚刚被转储在主文件类.

所以,我想知道…有什么好的方法来帮助整理这个代码荒野?还是这样吗?我来自C背景,我喜欢写面向对象的东西,但是我看不出有什么办法可以将这种结构转载给Flash.任何见解都将非常感激.

谢谢

解决方法

您可以将很多C技能应用到您的AS3项目中.

有很多技巧.很高兴你把代码放在主时间表上.而不是将代码放在时间轴上(这在AS2程序中太常见了,而且与AS3一样,您可以完全避免它)我建议将每个对象作为一个单独的类来考虑.例如,您应用mouseclick代码的动画片段可能是使用自己的类创建的对象.说MovieClip是一个球的图形.你应该创建一个“Ball”类来扩展(继承)MovieClip类,并处理它中的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概念,如polymorphism和封装.您应该尽可能将代码封装到单独的类中.说如果你的项目中有几种不同类型的MovieClip,并且你想要Ball类成为足球,Pool球和棒球的父类.每个孩子班都可以延长Ball课程.我发现对大型项目有用的另一件事是创建一个静态类来处理我所有的应用程序的事件.由于我将其定义为一个公共静态类,所以我可以将它导入到我的每个类中,并且其变量只在应用程序的持续时间内创建一次.这可以是非常有用的.

我也在类中创建了自己的伪析构函数,以便像AS3一样工作.最简单的方法是在销毁对象的实例之前调用伪析构函数.我确实让它在一个应用程序中自动发生,所以如果这个兴趣任何人,我可以跟踪代码..但AS3处理垃圾收集幕后,通常一个析构函数是不需要的,但也许我只是认为这是不需要的,因为我在AS3中编写了不好的习惯太久了.

就个人而言,我认为您在AS3中努力开发应用程序越多,就像您在C开发中一样,获得的乐趣越多,代码越可重用.保持它..很快,而不是一堆混乱的代码,你会有一堆动作脚本文件lol ..一个双刃剑,但whatevs.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读