2

我需要一些巫术来获得我刚刚实例化的对象的孩子。这是故事:

所以我有一个 Animate CC,我正在制作一个里面有几个孩子的 MovieClip。在我对它感到满意之后,我将在库中设置 LinkageFooClip并发布场景。现在我想编辑 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 未捕获类型错误:无法设置未定义的属性“alpha”

添加更多日志并设置断点后,我可以看到在实例化新对象后我还没有任何子对象。也console.log(foo.children);没有向我展示任何东西......

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

有谁知道如何解决它?我忘记了一些明显的事情吗?

4

1 回答 1

3

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

尝试这个:

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

在即将发布的版本中应该对此进行修复。

于 2016-07-12T15:34:33.317 回答