4

Actionscript 3でクラスがどのように機能するかを理解するのに少し助けが必要です。「パッケージ」から始めて、必要なライブラリをインポートし、クラスに名前を付けて、パブリック/プライベートであるかどうかを示し、何かを拡張することを理解しています。

その後、私にはわかりません。「(public)function class name()」と書いているようです

なぜこれを行うのか、中括弧内に何が入っているのかわかりません。

私は少し読んだので、おそらく以前の読書を少し逃したかもしれませんが、私はそれを得ることができないようです。

誰かが私にそれを説明してみてもらえますか?ありがとう。

4

3 に答える 3

12

ActionScript3クラス

packageステートメント_

さて、最初にあなたが言ったように、クラスはpackage1でラップされなければなりません。これにより、クラスを定義する必要がある最初のブロックが得られます。

package
{
    // Your class here.
}

このpackageステートメントは、.fla2を基準にしたクラスの場所を反映しています。たとえば、プロジェクト.flaと同じディレクトリ内にフォルダ「classes」がある場合、そのフォルダ内のクラスには、次のことを反映するパッケージステートメントが必要になります。

package classes
{
    // Your class here.
}


クラスの定義

パッケージステートメント内に、 1つのクラスを挿入できます。これをパッケージ自体と混同しないでください。パッケージ自体には多くのクラスが含まれている可能性があります。各クラスには、同じパッケージステートメントを持つ独自のファイルが必要です。

クラス定義は、最大5つの部分で構成されます。

  1. 名前空間。クラスはinternalまたはにすることができますpublicinternalクラスは同じパッケージ内のクラスでのみ表示できますが、クラスpublicはプロジェクト内のどこからでも表示できます。
  2. クラス名。
  3. 基本クラス(オプション)。基本クラスが定義されている場合、新しいクラスはそのクラスの拡張として機能し、基本クラスのすべての品質を継承します。
  4. 実装するインターフェース(オプション)。インターフェイスは高度なトピックであるため、AS3とOOPが進化するまで、今のところこれらを忘れることをお勧めします。

パッケージ内に「Person」というクラスを作成したい場合は、次のようになりますclasses

package classes
{
    public class Person
    {
        // Class qualities here.
    }
}


プロパティ

クラスにはプロパティを含めることができます。プロパティは、varキーワードを使用して定義されます。それらは、いくつかの名前空間(独自の名前空間を含む)の1つに属している可能性があり、クラスに属する値を保持するために使用されます。プロパティは、クラスの最上位に集まって最も一般的に見られます。

私たちのPersonクラスはプロパティheightを楽しむことができますweight

package classes
{
    public class Person
    {
        // Properties.
        public var height:Number = 1.70;
        public var weight:Number = 67.5;
    }
}

これらのプロパティには、作成したインスタンスを介してアクセスできPersonます。各インスタンスには、これらのプロパティの独自のセットがあります。


クラスコンストラクター(これがあなたが求めているものだと思います)。

コンストラクターは、クラスのインスタンスが作成されるとすぐに実行される必要があるロジックを保持するために使用されます。クラスコンストラクターは、クラス自体と同じ名前です。それはそうであるに違いありませんpublic、そしてそれは何も返しません。コンストラクターは引数を受け入れることができます。引数は通常、そのクラスの依存関係または必要な値への参照を渡すために使用されます。

package classes
{
    public class Person
    {
        // Properties.
        public var height:Number = 1.70;
        public var weight:Number = 67.5;

        // Constructor.
        public function Person(height:Number, weight:Number)
        {
            this.height = height;
            this.weight = weight;
        }
    }
}


メソッド

メソッドは、そのメソッドを呼び出すときに実行できるロジックを保持するために使用されます。多くの場合、メソッドは値を返し、引数を受け入れることができます。メソッドは、プロパティが属することができると予想される任意の名前空間に属することができます。

作成する各インスタンスのBMIを簡単に判別できるようにしたい場合がPersonあるため、そのためのメソッドを作成する必要があります。

package classes
{
    public class Person
    {
        // Properties.
        public var height:Number = 170;
        public var weight:Number = 65.5;

        // Constructor.
        public function Person(height:Number, weight:Number)
        {
            this.height = height;
            this.weight = weight;
        }

        // Determine my BMI and return the result.
        public function getBMI():Number
        {
            return weight / (height * height);
        }
    }
}


インスタンス

新しいクラスを定義したので、newキーワードを使用してこのクラスのインスタンスを作成できます。これは、クラスにアクセスできる場所ならどこからでも実行できます。Personこの場合、クラスを作成したため、プロジェクト内のどこからでも実行できますpublic

クラスはですがpublic、それが属するパッケージの外部からアクセスするには、importステートメントを使用する必要があります。このステートメントは、別のパッケージに属するすべてのクラス内で使用する必要があります。このimportステートメントは、に使用されているのpackageと同じ名前の後に続き、最後に含めるクラスの名前が含まれています。

import classes.Person;

インポートPersonしたら、そのインスタンスを作成して、異なる値heightを持つ変数に割り当てることができます。weight

var marty:Person = new Person(71, 1.76);
var bruce:Person = new Person(96.4, 1.72);

getBMI()次に、次の方法を使用して、各人のBMIを取得できます。

trace(marty.getBMI()); // 22.9
trace(bruce.getBMI()); // 32.6

1同じ.asファイルで参照できるパッケージの外部にクラスを配置できます
2ソースパスをさらに追加でき、パッケージはそれに関連することができます。

于 2012-07-22T22:45:55.380 に答える
0

クラスと同じ名前の関数はコンストラクターです。中括弧は基本的に、オブジェクトが作成されるときに即座に実行されるコードの一部です。コンストラクターに関する情報を検索してみてください。コンストラクターはすべてのオブジェクト指向プログラミング言語に存在すると思います(私は間違っているかもしれません)ので、多くのリソースがあります。

この概念については、ウィキペディアでも読むことができます。

于 2012-07-22T22:07:35.870 に答える
0

クラスと同じ名前の関数がコンストラクターです。オプションなので、不要な場合は省略できます。デフォルトのコンストラクターが追加されますが、これは基本的に何もしません。

コンストラクターを使用すると、クラスのインスタンスが作成された直後(つまり、コードの別のビットが実行されたときに実行されるコードを記述できますnew ClassName()。通常、これを使用して、クラスで使用されるいくつかの変数を初期化します。コンストラクターを定義すると、コンストラクターを処理することもできます。引数。他のコードがnew演算子を使用するときに渡すことができます。

于 2012-07-22T22:14:01.980 に答える