0

「ボックス」という名前のムービークリップがあり、「文字列」は実際には「ボックス」であり、ムービークリップではないとします。

私が今直面している問題は、 circle.addChild(this[String]) のようなものを使用できないことです

this[Strin]==Box をトレースしてみましたが、結果は true を返します。circle.addChild(this[String]) を削除すると、ボックスが追加されません。しかし、円に追加された新しいオブジェクトがあるかどうかを追跡したとき、量は同じままです。

ここで何が問題になっていると思われますか?

4

2 に答える 2

2

私があなたを理解していれば、呼び出された(インスタンス名を持つ) String を別の Box 内に追加しようとしてMovieClipますMovieClip

は、ActionScript 3.0 のクラス名であるため、オブジェクトにStringという名前を付けることはできません。 、、などの クラス名または保護されたキーワードを使用してオブジェクトに名前を付けることはできません。 これらは ActionsScript が使用する単語です。グローバルに (それらはトップ レベルのキーワードです)。String
ifforclassBoolean

また、オブジェクトに名前を付けることができますが(インスタンス名を付ける)MovieClip、、、などですがSprite、これらの名前はすべてLoaderStageアニメーション/アプリケーション、および Flash にインポートできるパッケージ内のクラス名として ActionScript によって使用されることに注意してください。ほとんどすべてのものを自動的にインポートします。
これらの単語でオブジェクトに名前を付けると、コードが正しく機能しない、またはまったくコンパイルされないなど、いくつかのリスクが発生します...

@ Bosworth99と @ mervが指摘しているように、ActionScript で使用される命名規則であるUpperCamelCaseLowerCamelCaseにも注意してください。

クラスは (慣例により) UpperCamelCase (最初の文字が大文字) で記述されます。これは、name がクラス名であることを示します。
オブジェクトは一般に、lowerCamelCase (最初の文字が小文字で、新しく構成されたすべての単語が大文字) で記述され、単語がオブジェクト名 (または、既に予約されている可能性がある別のキーワード) であることを示します。

于 2011-03-12T18:54:56.180 に答える
0

あなたの構文は少し奇妙です。'Box 'というMC があるとします。これをフラッシュ ide で作成していますか、それともプログラムで作成していますか? いずれにせよ、クラス (オブジェクト) のインスタンスではなく、クラスを参照しているように見えます。試す:

var _circle:MovieClip;
var _box:Sprite;

private function createDisplayObjects():void
{
_circle = new MovieClip();
this.addChild(_circle);

_box = new Sprite();
_circle.addChild(_box);

}

そして - 一般的に合意された慣行と同様に、クラス名は大文字で、インスタンス名は小文字のキャメルケースです。プライベート変数の前にアンダースコアを付けるのも好きです。

NemoStein は絶対に正しいです - 予約済みのキーワードは毎回コードを無効にします...

幸運を

于 2011-03-12T19:04:43.923 に答える