下午。我在舞台上有一个FLA,一个MovieClip
- 剪辑在库中名为myThing,实例名称为myThing。在另一层,我有以下脚本:
this.myThing=this.getChildByName("myThing");
console.log(this.myThing);
当我在WebGL
项目中运行它时,它按照我的预期工作并返回一个JS对象,但是当我在canvas
项目中运行相同的东西时(我需要使用它) )它回来了null
。
最初,任何人都可以解释Adobe Animate CC中WebGL和画布项目之间的区别,以及如何获取子剪辑的引用来控制其时间轴?
除此之外,还有人能指出我在编写这些项目脚本方面的任何体面资源吗?似乎无论我搜索什么,我总是最终回到那个*!@%的兔子教程,设法将很少的信息塞进很多单词。
谢谢大家,我们非常感谢您的帮助:)
答案 0 :(得分:0)
所以我是个笨蛋。
任何资产的name
属性默认为null
。这不是问题,因为一旦我意识到您可以致电getChildByName()
,this.someChild.someMethod()
方法对我来说并不是必需的(至少对我而言)。
我迷上了错误的方法,因为它是我唯一能找到的例子。与AS3或甚至竞争的JS库(如Greensock
相比,我仍然发现文档非常粗略且不太有用也不确定为什么我的第一种方法在WebGL中起作用而在画布中起作用。好吧,向上和向上......
答案 1 :(得分:0)
WebGL和HTML5 Canvas文档在Animate CC中的工作方式略有不同。 在WebGL中,具有实例名称的符号可按如下方式访问:
var mySymbol = this.getChildByName("instance-name");
在Canvas中,可以按如下方式完成:
var mySymbol = this.instance-name;
可以在canvas和WebGL中使用this.getChildAt(index)
引用未命名的实例。
获得对所需实例的引用后,您可以根据需要轻松控制它。 (gotoAndPlay()/ Stop()等)
PS:在画布中,符号实例名称未显式设置为输出中相应符号的名称属性 - 因此name属性返回为null。