我需要一些巫术才能让孩子成为我刚刚实例化过的物体。这是故事:
所以我有一个Animate CC,我正在制作一个里面有几个孩子的MovieClip。在我满意之后,我将库中的Linkage设置为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:无法设置属性'alpha' 未定义
添加更多日志并设置断点后,我可以看到在实例化新对象后我还没有任何子节点。 console.log(foo.children);
也绝对没有向我显示......
然而......添加肮脏的小黑客:
setTimeout(function(){ console.log(foo.children); }, 200);
在我的for循环中打印出所有孩子。所以我需要等到对象实际实例化并在我可以访问它之前创建所有的垃圾。回到过去好的Flash时代,我记得等待ADDED_TO_STAGE
事件,但我在这里看不到类似的内容:/(added
但是它没有帮助。)
任何人都知道如何解决它?我忘记了一些明显的事情吗?
答案 0 :(得分:3)
我很确定这是由于Animate CC导出中的错误导致儿童无法立即使用。
试试这个:
var foo = new lib.FooClip();
foo.gotoAndStop(0); // Force an update
var child = foo.getChildAt(i);
在即将推出的版本中应该有解决方法。