Adobe Animate CC、HTML5 Canvas - 将实例名称捕获为动态文本?
Posted
技术标签:
【中文标题】Adobe Animate CC、HTML5 Canvas - 将实例名称捕获为动态文本?【英文标题】:Adobe Animate CC, HTML5 Canvas - capture instance names as dynamic text? 【发布时间】:2019-10-23 10:01:28 【问题描述】:请原谅,我不是一个合格的 JS 程序员,但我仍然在思考很多概念。
假设有一组类似的 2 帧/2 状态翻转影片剪辑嵌套在一个包含剪辑中,该剪辑具有实例名称“地图”。每个剪辑使用一个 4 位的 ID 号,前面有一个“s”作为实例名称——例如,“s6566”。
假设一个人想要捕获这些各自的实例名称来定义一个变量,这样一个小脚本可以允许这些电影剪辑中的每一个在翻转/活动状态(在本例中为“6566”)显示它们的 ID,跨越多个文件。
最终我有成千上万个这样的小片段分布在几十个文档中,似乎应该相当简单地获取每个符号的实例名称/ID,从头开始去掉“s”(因为实例名称可以' t 以数字开头),并将所述 ID 作为动态文本应用于其各自符号的翻转/活动框架。
有没有实现这个目标的方法?我希望我有一些示例代码可以包含在这里,但我不太确定如何开始,除了这样布置问题。还没有找到任何关于捕获实例名称的信息,我不确定它是否可能。谢谢。
【问题讨论】:
【参考方案1】:MovieClips 的子项使用它们的实例名称作为引用存储。可以在导出的库JS文件中看到格式。请注意,Animate 将转换某些实例名称以删除不支持的字符或重复项。
这里有一些未经测试的伪代码可以帮助您入门。
// You can iterate a MovieClip and get the names
for (var name in someMovieClip)
// Ignore anything not starting with an s
if (name.substr(0,1) != "s") continue;
// remove the s
var newName = name.substr(1);
// The child can be accessed using bracket-access with its name
var child = someMovieClip[name];
// The child should have text instances if it is set up how you described
// Set the text to the newName
child.textInstance.text = newName
进行更改后不要忘记更新阶段。如果您已经设置了 Ticker 来执行此操作,它应该会立即更新。
我希望这会有所帮助。如果您有后续问题,请告诉我。
【讨论】:
再次感谢@Lanny!我希望在这里见到你。所以我用包含剪辑的实例名称替换了someMovieClip
,并用console.log(newName)
试了一下,但newName
以undefined
的形式返回。我错过了什么?关于var name
...我是在将name
声明为那里的新变量吗?我意识到我真的在这里展示了我的**,哈哈。话虽如此,Ticker 是什么? 畏缩
如果你console.log(n)
,你会得到什么?它应该是“s1456”或任何您的实例名称。 for 循环只是迭代 MovieClip 的所有属性,并且实例作为变量存储在每个 MovieClip 上。它将输出字符串名称。 EaselJS 使用createjs.Ticker
定期更新舞台,Animate 应在 html 模板中启动此操作。希望有帮助!
console.log(n)
返回Can't find variable: n
哈,完全是我的错。应该是 name
而不是 n
。 name.substr()
等
你有一些 Map
的用法与 this.Map
。请注意,javascript 中有一个全局 Map 对象,这就是您看到 [native code]
日志的原因。把它们换掉,你可能会开始看到你期望的实际值!以上是关于Adobe Animate CC、HTML5 Canvas - 将实例名称捕获为动态文本?的主要内容,如果未能解决你的问题,请参考以下文章
Adobe animate CC Javascript gotoandplay 延迟
如何将 adobe animate CC fla 导出到 illustrator CC
Adobe Animate CC Javascript - 每次可见时启动动画
Adobe Animate CC Canvas (CreateJS) 矢量图形在放大时变得模糊
Adobe Animate (HTML5 Canvas) 检查两个影片剪辑的时间线位置,如果两个影片剪辑都在第 2 帧上,则显示另一个影片剪辑