EaselJS:从库中实例化 object 后如何访问 children

EaselJS: How to access the children after instantiating object from library

我需要一些魔法来获得我刚刚实例化的 object 的 children。这是故事:

所以我有一个 Animate CC,我正在制作一个 MovieClip,里面几乎没有 children。满意后,我将库中的 Linkage 设置为 FooClip 并发布场景。现在我想编辑 JS 文件并添加一些魔法。假设在每个实例中实例化几个 object 和不同的 child。代码看起来或多或少像这样:

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

添加更多日志并设置断点后,我可以看到在实例化新 object 之后我还没有任何 children。另外 console.log(foo.children); 什么也没给我看...

但是...添加肮脏的小技巧: setTimeout(function(){ console.log(foo.children); }, 200); 在我的 for 循环中打印出所有 children。所以这就像我需要等到 object 实际实例化并在内部创建所有废话才能访问它。回到美好的 Flash 时代,我记得等待 ADDED_TO_STAGE 事件,但我在这里看不到类似的东西:/(有 added 但它没有帮助)。

有人知道怎么解决吗?我是不是忘记了一些显而易见的事情?

我很确定这是由于 Animate CC 导出中的一个错误,其中 children 无法立即使用。

试试这个:

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

在即将发布的版本中应该会修复此问题。