将AS3代码放置在舞台/ MC时间轴上,而不是在类中

时间:2010-06-02 18:13:16

标签: actionscript-3 flash oop actionscript-2 timeline

我知道ActionScript 3.0的设计初衷是一种基于面向对象的语言,使用它意味着Flash文档中的时间线代码更少甚至没有。

我对OOP很有经验,我很乐意写课。但是,由于我主要使用Flash进行动画制作,因此除了预加载器,字幕,质量控制,网站链接等以外,我几乎不需要 来编写ActionScript代码。事实上,我仍然将我的Flash电影设置为使用AS2,因为我已经习惯了gotoAndPlay() / gotoAndStop(),AS2预加载器,字幕,质量控制甚至是getURL()。当然,我现在真的想继续前进,几乎每个人都使用Flash Player 9或10,现在我已经涉足其他OO语言,如Java,C#和Objective-C。

我是AS3的全新人,我也不是很了解AS2。考虑到我目前使用ActionScript,在任何情况下都可以在时间轴中使用非常简单的AS3代码而不是将代码移动到类中,特别是因为移动到类可能意味着不必要地将LOC的数量从4增加到40 ? (哎呀,后一种情况('而不是......')甚至是一个有效的问题?)

2 个答案:

答案 0 :(得分:4)

如果您已经熟悉AS2(并且您也有使用其他语言的经验),切换到AS3应该不会太难。有一些地方的事情发生了很大变化:基本上是事件模型和一些广泛使用的API,如flash.net(即加载东西,无论是图像,SWF,声音,XML等)和显示列表(很多)更多选项,而不仅仅是movieclip,更连贯,重新定位等)。使用XML也改变了(好),它更强大,更容易(但如果您愿意,可以使用旧的API,它仍然存在)。不过,大部分语言本身并没有太大变化。

我确信你知道在时间轴中有代码的潜在问题。嗯,这同样适用于AS3,尽管在AS3中不允许在代码上放置代码。

我没有看到在IDE中将内容放入舞台并使用动画片段制作动画时出现问题。 IMO,这就是他们首先出现在那里的原因。我知道有些人痴迷于通过代码创建和定位所有内容。我不是其中之一。对我来说,IDE可以是布局,补间等的好工具,至少在大多数情况下(对于一些非常动态的东西,另一方面,你也需要对布局进行编码)。

所以,我不会直接建议不要适度使用时间轴代码。如果它符合您的需求,适合您的工作流程并让您做您需要做的事情,而不是无法维持(甚至跟随)混乱,为什么不呢?

如果在某些时候你需要在课堂上放一些东西,你可以随时重构和移动你的代码。

答案 1 :(得分:2)

从您提供的有关如何使用Flash的示例中,没有任何内容真正发生变化,使其变得更加困难。您没有理由为上述所有内容使用外部代码。你可以像以前一样工作(gotoAndPlaygotoAndStop仍然存在并且工作正常。我想到的唯一比以往更乏味的事情就是不再有getURL()这个事实。但是,Senocular重新制作了getURL类,您可以找到它here

我想说,只有当你的项目特别严重,然后将大部分(如果不是全部)移动到类中并以OOP方式正确地构建它。哎呀,你甚至可以将你的舞台的引用传递给基类,并且只是以这种方式操作。

在.fla时间轴中:

import com.yourdomain.Main;

var main:Main = new Main(this);

在您的外部主类中:

package com.yourdomain
{   
    public class Main
    {
        private var mainTimeline:Object;

        public function Main(_mainTimeline:Object):void
        {
            mainTimeline = _mainTimeline;

            mainTimeline.gotoAndPlay("fScream");
        }
    }
}