2016-07-12 9 views
1

インスタンス化したばかりのオブジェクトの子を取得するには、いくつかの魔法が必要です。話はここにあります:EaselJS:ライブラリからオブジェクトをインスタンス化した後に子にアクセスする方法

私はアニメーションCCを持っています。私は少数の子供たちと一緒に映画クリップを作っています。私はそれに満足した後、ライブラリ内のリンケージをFooClipに設定し、シーンを公開します。今私は、JSファイルを編集し、いくつかの魔法を追加します。たとえば、オブジェクトのインスタンスを少数ずつ、それぞれのインスタンスごとに異なるインスタンスを作成します。コードは、多かれ少なかれのようになります。

for (var i = 0; i < 10; i++) { 
    var foo = new lib.FooClip(); 
    var child = foo.getChildAt(i); 
    console.log(child);    // This prints out `undefined` 
    child.alpha = 0.5; 
    foo.x = i * 10; 
    stage.addChild(foo); 
} 

そして当然、私は

Main.js:58 Uncaught TypeError: Cannot set property 'alpha' of undefined

いくつかのより多くのログを追加し、ブレークポイントを設定した後、私はインスタンス化した後、それを見ることができます...ここでエラーを取得しています新しい物私はまだ子供がいません。またconsole.log(foo.children);は私に絶対に何も...

を示していないが...追加汚い少しハックされています setTimeout(function(){ console.log(foo.children); }, 200); 私の内側のforループは、すべての子を私にプリントアウトされます。つまり、オブジェクトが実際にインスタンス化され、アクセスできるようになる前にすべてのくそを作成するまで待つ必要があるようです。私はいつも良いフラッシュの日にADDED_TO_STAGEイベントを待っているのを覚えていますが、ここには何も表示されません。/(addedですが、それは助けになりません)。

誰でも解決方法を知っていますか?私は何か明白なことを忘れましたか?

答えて

2

これは、子どもがすぐに利用できないAnimate CCエクスポートのバグが原因であると確信しています。次期バージョンでは、このための修正があるはず

var foo = new lib.FooClip(); 
foo.gotoAndStop(0); // Force an update 
var child = foo.getChildAt(i); 

はこれを試してみてください。

+0

ブリリアント!それは今働きます。 'gotoAndStop'(とPlay)が更新を強制していることを知っておきましょう。大きな感謝@ラニー。 – 3vilguy

+0

お寄せいただきありがとうございます。間違いなく解決したい! – Lanny

関連する問題