-3

我知道 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 ? (哎呀,后一种情况('而不是......')甚至是一个有效的关注点吗?)

4

2 回答 2

4

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

我相信您已经意识到在时间线中包含代码的潜在问题。好吧,这同样适用于 AS3,尽管在 AS3 中不允许在对象上放置代码等某些事情。

我认为在 IDE 的舞台上放置东西并使用动画剪辑制作动画没有问题。IMO,这就是为什么他们首先在那里。我知道有些人痴迷于通过代码创建和定位所有内容。我不是其中之一。对我来说,IDE 可能是一个很好的布局、补间等工具,至少在大多数情况下(另一方面,对于一些非常动态的东西,您也需要编写布局代码)。

所以,我不会直接建议不要适度使用时间线代码。如果它适合您的需求,适合您的工作流程,并且可以让您做您需要做的事情,而不会造成无法维护(甚至遵循)的混乱,为什么不呢?

如果在某些时候您需要将一些东西放入类中,您可以随时重构并移动您的代码。

于 2010-06-03T02:02:16.273 回答
2

从您提供的有关如何使用 Flash 的示例中,并没有真正改变以使任何事情变得更加困难。没有理由为上述所有内容使用外部代码。您可以像以前一样工作(gotoAndPlay仍然gotoAndStop存在并且工作正常)。唯一比以前更乏味的事情是没有更多的事实getURL()。但是,Senocular 重新制作了 getURL 类,您可以在此处找到它。

我想说,只有当您的项目代码特别繁重时,才将大部分(如果不是所有内容)都移动到类中,并以 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");
        }
    }
}
于 2010-06-03T18:22:43.520 回答