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) 试了一下,但newNameundefined 的形式返回。我错过了什么?关于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 而不是 nname.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 到 Vue.js 组件中

Adobe Animate CC Canvas (CreateJS) 矢量图形在放大时变得模糊

Adobe Animate (HTML5 Canvas) 检查两个影片剪辑的时间线位置,如果两个影片剪辑都在第 2 帧上,则显示另一个影片剪辑