通过外部JS脚本访问Adobe Animate内部库时出现HTML5错误
问题描述
近期开始学习JavaScript,遇到如下问题:尝试通过外部JS脚本访问Adobe Animate内部库时触发错误,但将该脚本直接写入Adobe Animate内部则可正常运行。相关代码如下:
let myBlue = new lib.blueShape; exportRoot.addChild(myBlue); let xPosition = Math.floor(Math.random()*700); let yPosition = Math.floor(Math.random()*700); myBlue.x = xPosition; myBlue.y = yPosition; root.push(myBlue);
错误出现在语句let myBlue = new lib.blueShape;处。
解决方案
问题根源是Adobe Animate导出的项目中,lib对象默认处于内部作用域,外部脚本无法直接访问。可以通过以下步骤解决:
- 暴露内部对象到全局作用域
在Adobe Animate内部的主时间轴脚本中,添加代码将需要访问的内部对象挂载到全局window上:
// 把lib对象暴露到全局,供外部脚本访问 window.lib = lib; // 同时暴露exportRoot和root(自定义别名避免全局冲突) window.exportRoot = exportRoot; window.appRoot = root;
- 调整外部脚本加载顺序
确保外部JS脚本在Adobe Animate导出的核心JS文件之后加载,比如HTML中按以下顺序引入:
<!-- Adobe Animate导出的核心脚本 --> <script src="your-animate-project.js"></script> <!-- 你的外部脚本 --> <script src="your-external-script.js"></script>
- 修正外部脚本的变量引用
如果之前给root起了别名appRoot,外部脚本里的root.push(myBlue)要改成appRoot.push(myBlue);若直接挂载window.root = root,可保持原写法,但需注意避免全局变量冲突。
完成以上操作后,外部脚本就能正常访问Adobe Animate内部的库对象了。
内容的提问来源于stack exchange,提问作者Deni Smith
相关产品推荐
相关产品推荐

