-3

私は、ActionScript 3.0がゼロから設計されており、主にオブジェクト指向言語であり、それを使用することは、Flashドキュメントのタイムラインコードが少ないか、まったくないことを意味することを認識しています。

私はOOPの経験が豊富で、クラスを書くのに慣れています。ただし、私は主にアニメーションにFlashを使用しているため、プリローダー、字幕、品質管理、Webサイトリンクなど以外のActionScriptコードを作成する必要はほとんどありません。実際、私は今でもAS2を使用するようにFlashムービーを設定しています。これは、gotoAndPlay()/ gotoAndStop()、AS2プリローダー、字幕、品質管理、さらにはに慣れているためですgetURL()。もちろん、実質的にすべての人がFlash Player 9または10を使用していて、Java、C#、Objective-Cなどの他のオブジェクト指向言語にも手を出しているので、本当に先に進みたいと思います。

私はAS3の完全な初心者であり、AS2についてもあまり学習していません。現在のActionScriptの使用を考慮すると、コードをクラスに移動する代わりに、タイムラインで非常に単純なAS3コードを使用しても問題がない場合があります。特に、クラスに移動すると、LOCの数が4から40に不必要に増える可能性があるためです。 ?(ええと、後者の場合(「...の代わりに」)は、まったく有効な懸念でさえありますか?)

4

2 に答える 2

4

AS2に既に精通している場合(および他の言語の経験もある場合)、AS3への切り替えはそれほど難しくありません。物事がかなり変わった場所がいくつかあります。基本的には、イベントモデルと、flash.net(つまり、画像、SWF、サウンド、XMLなどの読み込み)やディスプレイリスト(多くの場合)など、広く使用されているAPIです。単なるムービークリップよりも多くのオプション、より一貫性のある、親の変更など)。XMLの操作も(永久に)変更され、より強力で簡単になりました(ただし、必要に応じて古いAPIを使用できますが、まだ存在しています)。ただし、言語自体の大部分はそれほど変わっていません。

タイムラインにコードを含めることの潜在的な問題をご存知だと思います。同じことがAS3にも当てはまりますが、オブジェクトにコードを配置するなどのいくつかのことはAS3では許可されていません。

IDEのステージにコンテンツを配置し、アニメーションにムービークリップを使用しても問題はありません。IMO、それが彼らがそもそもそこにいる理由です。コードですべてを作成して配置することに夢中になっている人がいることを私は知っています。私はその一人ではありません。私にとって、IDEは、少なくともほとんどの場合、レイアウトやトゥイーンなどに適したツールになる可能性があります(一方、非常に動的なものの場合は、レイアウトもコーディングする必要があります)。

したがって、タイムラインコードを適度に使用しないように完全にアドバイスすることはしません。それがあなたのニーズに適合し、ワークフローに適合し、混乱を維持する(または追跡する)ことを不可能にすることなく、必要なことを実行できるのであれば、なぜですか?

ある時点でクラスに何かを入れる必要がある場合は、コードをリファクタリングして移動します。

于 2010-06-03T02:02:16.273 に答える
2

Flashの使用方法について説明した例から、これをさらに難しくするような変更はありません。上記のすべてに外部コードを使用する必要がある理由はありません。以前とほとんど同じように作業できます(まだ存在し、問題なく動作します)gotoAndPlaygotoAndStop以前よりも退屈であると頭に浮かぶ唯一のことは、これ以上ないという事実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 に答える