0

エラーが発生しました:

TypeError: Error #1010: A term is undefined and has no properties.

それが指している用語は、作成されたムービークリップです。作成コードは次のとおりです。

var Cursor = new CursorImg();
GameMenu.addChild(Cursor);

そして、ここにアクセスします:

GameMenu.Cursor.gotoAndStop(1);

これの何が問題なのかわかりませんが、これがトリガーされると、そのエラーが発生します。動作する他のコードと比較しましたが、ムービークリップとその親の名前を除いてまったく同じです。

誰かがこれを引き起こしている可能性があることを知っていますか?

4

3 に答える 3

0

コードスニペットを考えると、Cursor変数は関数ローカルであり、関数の外部で定義されるのではなく、関数の内部で定義されるため、このようにしてクラスのプロパティになります。したがって、前者を関数から分離var cursor:MovieClip;cursor=new CursorImg();て外部に配置し、再度テストします。その「カーソル」を頻繁に参照する必要があると思います。このようにgetChildByName呼び出すと、パフォーマンスが低下します。

于 2012-10-04T05:57:38.950 に答える
0

変数を定義しcursornew CursorImg()からに追加しgameMenu、アクセスしようとしましgameMenu.cursorたが、実際にはそのムービーgameMenuに。という名前のオブジェクトはありませんcursor。ただし、定義した変数を使用して、添付のムービーに簡単にアクセスできますcursor

cursor.gotoAndStop(1);

AS3では、AS2で行ったように、動的に追加されたムービークリップにその名前でアクセスすることはできません。あなたはクラスのgetChildByName()機能の助けを借りてのみ映画にアクセスすることができます。MovieClipだから、あなたはそのムービークリップに次のようにアクセスすることもできます

var cursor = new CursorImg();
gameMenu.addChild(cursor);
cursor.name = "cursor";

classその後、好きな場所からアクセスできます

var cursor:MovieClip = gameMenu.getChildByName("cursor") as MovieClip;
cursor.gotoAndStop(1);

参考:ステージに追加されたものはすべて、一般的にの下にパッケージ化されDisplayObjectているため、正しい型を取得するには、型キャストする必要があります。

標準的な方法は変数のキャメルケースであり、クラスの場合のみすべての単語の最初の文字を大文字にする必要があるため、名前命名にはキャメルケーススタイルをより適切に実践することができます。variable

于 2012-10-04T04:52:39.570 に答える
0

投稿された限られた量の情報で何が起こっているのかを知るのは難しいですが、カーソルはGameMenuのプロパティではなく、単なる子のようです。

これを試して:

var cursor = new CursorImg();
gameMenu.addChild(cursor);
cursor.name = "cursor";

と:

gameMenu.getChildByName("cursor").gotoAndStop(1);

これは本当にあなたが望むことを達成するための最良の方法ではありませんが、他の方法は私が知らないあなたのコードの構造に依存します。

また、変数名のAS3コーディング規則では、キャメルケース(最初の単語の小文字の最初の文字、次の単語の大文字の最初の文字)を使用することに注意してください。

于 2012-10-04T04:02:41.537 に答える