0

以前はActionscript2を使用してFlashで簡単なものをプログラムしていました。現在、Actionscript 3に移行しようとしていますが、変更に慣れているようです。

私が疑問に思っていたのは、私が見た多くのプログラマーがプログラミングをしている方法でした。

たとえば、このコードの一部は、いくつかのことについて疑問に思いました。

package  {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;

    public class KeyExample extends Sprite {
        private var _theyArePressed:Object = { };
        public function Example() {

        }
    }
}

なぜ「パッケージ」を使用するのですか?私はいつも映画の最初のフレームにASを置くだけですが、それだけですが、最近そうするのは間違っていますか?

それから、彼らはいくつかのものをインポートしているのがわかりますが、私が見た限りでは、とにかくインポートしなくてもそれらを簡単に使用できました。ここでのポイントは何ですか?

そして、スプライトについては?彼らが何のためにあるのか知りたいです。

前もって感謝します

4

6 に答える 6

1

短いSOスタイルの答えであなたの質問に答えるのは簡単ではありません。

最良の方法は、いくつかのOOPFlashチュートリアルを検索することです。1つはここで見つけることができます:http://active.tutsplus.com/tutorials/actionscript/as3-101-oop-introduction-basix/

要するに(簡略化された答え):

  • packageAS3のコードを書く方法であり、プロジェクトに関連するファイルの場所を記述します(ここでも簡略化された回答)。たとえば、.asファイルをフォルダ(don/graphics/shapes)に入れると、パッケージ名は。になりますdon.graphics.shapes
  • importコードを外部ファイルに書き込む場合は、詰め込む必要があります。Flash IDEがバックグラウンドで一部のクラスをインポートできるよりもフレームにコードを記述した場合、一部のimportステートメントを省略できます。
  • SpriteMovieClipタイムラインなしです。ええと、それはいくつかのより多くの機能を持っています(例えば、それは動的ではありません)が、ほとんどの場合、「タイムラインのないMovieClip」は知るのに十分です。
于 2013-02-27T17:03:24.893 に答える
1
package

この行は、定義しようとしているクラスが属するパッケージまたはコレクションを定義します。これは、FLA (または追加のソース パス) に対するクラスを保持する .as ファイルの位置を反映しています。パッケージの背後にある考え方は、クラスにより多くのコンテキストを与え、クラス名の競合を避けることです。たとえば、独自のSpriteクラスを作成して、独自のパッケージに入れることができます。

internalクラスを同じパッケージ内の他のクラスのみが使用できるようにするために使用できる名前空間もあります。

import package.Class;

この行は、現在のクラス定義に外部クラスを導入します。デフォルトですべてを利用できるようにするのは煩わしいように思えるかもしれませんが、それはうまく機能しpackages、多くの利点があります。

  • 読みやすさを提供します。インポートステートメントのトップリストに目を通すことで、他のクラスでどのクラスが使用されているかを判断できます。
  • 2 つの異なるパッケージに同じ名前の 2 つのクラスがある場合 (たとえば、独自の Sprite クラスを作成する場合) に、必要なクラスを定義できます。
  • import ステートメントを簡単に変更して、別のパッケージにある同じ名前のまったく別のクラスを参照することができます。

別のパッケージと同じパッケージにあるクラスで作業している場合、インポートを使用する必要はありません。別のパッケージにあるクラスをインポートするだけで済みます

そしてスプライトについて?彼らが何のためにいるのか知りたい..

Spriteから継承する組み込みクラスですDisplayObject。つまり、表示リストを介して画面に描画できるグラフィックスを表すために使用されます。次に示すように、組み込みの DisplayObject の階層で、従来の 1 層下にありMovieClipます。

ここに画像の説明を入力

これが意味することは、それらを画面にレンダリングするプロセスと、情報を保持するために使用するメモリの観点から、Spritesより軽いということです。この 2 つの主な違いは、ムービークリップにはフレームがあり、スプライトにはフレームがないことです。つまり、スプライトのようなメソッドやプロパティMovieClipsはありません。gotoAndStop()currentFrame

最大の結果を得るためのアイデアは、このツリーを可能な限り上に移動し、より軽量で複雑でないクラスを介して最小限のリソースを使用することです。

于 2013-02-27T23:11:16.917 に答える
0

パッケージは、コードを分離するための優れた方法です。複数のプロジェクトで使用するボタンがある場合は、それをクラスにすることができます。ロジックのさまざまな部分を抽象化しているため、これはOOPアプローチに従います。

クラスはすべてにアクセスできるわけではないため、他のクラスをインポートする必要があります。キーボードを使用する場合は、そのクラスをインポートするだけです。

于 2013-02-27T17:02:24.410 に答える
0

パッケージを使用する理由は、名前の競合を避けるためです。私は button というクラスを作成し、それを自分のコンポーネント パッケージで使用できます。別の開発者は、button というクラスを作成して自分のパッケージに入れることができます。このようにして、競合することなく同じプロジェクトで両方のボタンを使用できます。

import ステートメントを使用して、これらのクラスをコンパイル時に取り込みます。 import を使用しないと、クラスは使用できません。この理由は、プロジェクトに多数のクラスを含む大きなライブラリがあり、特定の量のクラスのみを使用したい場合があります。インポートを使用しなかった場合、それらすべてが含まれ、結果の swf が必要なクラスのみをインポートする場合よりも大きくなります。

この記事を読んで、しっかりと理解してください。

addChild などを使用して表示リストに何かを追加する必要がある場合は、Sprite クラスを使用します。Sprite はタイムラインのない MovieClip に似ているため、複数のフレームは含まれません。アプリで使用する最初のクラスは何かを表示できる必要があるため、通常は Sprite を拡張するのが標準です。

この記事を読んで、表示リストとそれにアタッチできるクラスを理解してください。

于 2013-02-27T17:05:02.340 に答える
0

クラスで使用する .fla が必要な場合は、次の手順を実行します。

1: 指定したディレクトリに .as ファイルを配置します。このディレクトリはパッケージの最上位です。

2: Flash-Preferences をクリックします。

ここに画像の説明を入力

3: [ActionScript3.0 設定...] をクリックします。 ここに画像の説明を入力

4: ディレクトリにリンクされています。 ここに画像の説明を入力

どこでも使えるようになりました。

于 2013-02-27T17:00:19.683 に答える
0

DocumentClassand Classes(パッケージに保持されている) を使用すると、一般に、ソースがクリーンになり、保守が容易になり、交換可能になり、グループでの作業が容易になります。したがって、そこには利点しかありません;)

タイムライン スクリプトとは異なり、デフォルトでインポートされるクラスはほとんどないため、すべてのインポートが必要です。

SpritesMovieClipsなしのようなものFramesです。そのため、より軽量です。したがって、フレームが必要ない場合は、Sprites!

ところで、あなたのスニペットでは、機能名は小文字で始まる必要があります;)

于 2013-02-27T17:00:50.450 に答える