2017-05-09 7 views
0

子を作成してムービークリップに追加しましたが、他の関数でそのプロパティにアクセスすると、Animateはエラー#1009をスローします:nullのプロパティまたはメソッドにアクセスできませんオブジェクト参照。AS3子がステージに追加された後でnullです。

子どもは、難なく追加され削除されたリスナーを持っていて、removeChildで表示リストから削除することはできますが、それに関連付けられた他のプロパティ(x、yなど)はありません。子が表示リストに追加されたのと同じですが、他の関連プロパティはありませんか?

子がMovieClipとしてキャストされていて、そのプロパティにアクセスする前に子がステージ上で表示オブジェクトとして利用できるようにリスナー(ADDED_TO_STAGE)を追加しようとしました。しかし、運がない。

私のゲームでは、正常に動作するように見える同じコードの他の状況があります。私は専門家ではないんだけど、私はまた、ActionScriptのに新しいものではありませんよ、とこれは私を当惑さ...

子を作成するコード:

function createNPCtargets():void 
{ 
    for (var i:int=0 ; i<= npcs -1 ; i++) 
    { 
     var NPCtarget:MovieClip = new target_mc; 
     overlay_mc.addChild(NPCtarget); 
     NPCtarget.name = "target_" + i; 
     NPCtarget.addEventListener(MouseEvent.CLICK, fireShot); 
    } 
} 

エラーがスローコード(npcObjectで結構です):あなたは、この更新機能をたくさん呼んでいる場合は、あなたの問題が何であるか

function moveNPC():void 
{ 
    for (var i:int=0 ; i<= npcs -1; i++) 
    { 
     overlay_mc.getChildByName("target_" + i).x = npcObject.x; 
     overlay_mc.getChildByName("target_" + i).y = npcObject.y; 
    } 
} 
+0

このループ内に 'trace(overlay_mc.getChildByName(" target_ "+ i));"を追加するとどうなりますか?オブジェクトはまったく見つかりますか? – 3vilguy

+0

良いアイデア3vilguy、私は実際に投稿する前にこれを試しました。奇妙なことに、それは問題なしでオブジェクト自体をトレースしますが、2番目に.x(または他のプロパティ)を行末に追加すると、実行時エラーがスローされます...そのため、問題のないオブジェクトが見つかるようですそのプロパティのどれにもアクセスすることはできません。 – user3600741

+0

それがうまくいくならば、それをDisplayObjectとしてキャストし、nullでないかどうかを確認するのはどうですか?そして、あなたは確かに 'npcObject'はnullではありませんか? – 3vilguy

答えて

0

わからないが、あなたは配列内のムービークリップを保つに見えるかもしれません、実際にはよりパフォーマンスかもしれません。

+0

ありがとうアンドリュー!間違いなく、メインゲームのループの一部、多くの更新機能を呼び出します。私はあなたのコードをショットし、この時に別のエラーが発生しました:エラー#1010:用語は未定義で、プロパティはありません。 これは、メインループが問題を引き起こしていると考えています。moveNPC()関数は、配列に子を移入する前に呼び出されているため、エラーが発生します。私はそれがステージに最初に追加されたかどうかをテストしたので、これは奇妙です、そして子供は確かにそこにあり、ちょうどヌルです。 – user3600741

+0

配列を持つソリューションは、getChildByNameが非常に遅い行く方法です。上記の3vilguyのように - npcObjectをトレースしようとしましたか?多分これが問題を引き起こしているのでしょうか?あなたのムービークリップは今すぐにアクセスできるはずです – Philarmon

+0

もっとコードを投稿できますか?この "npcObject"とは何ですか? –

関連する問題