在 Flash/Animate 中扩展 Haxe class
Extending Haxe class in Flash/Animate
我正在尝试将在 Flash/Animate 中制作的一些动画集成到 OpenFL 应用程序中。
为此,我使用了 OpenFL SWF 库。在我的 project.xml 我有这个:
<haxelib name="swf" />
<library path="assets/library.swf" prefix="View" generate="true" preload="true" />
到目前为止,还不错。
问题是我无法在我的 swf 中使用 stop();
(或任何其他类型的时间轴脚本)控制动画,因为 SWF 库还不支持它。
我目前的解决方案涉及框架标签。
简单的说,我就是在主时间线的labels中添加特殊的值,然后在Haxe中读取。
这可行,但不是自动的(我必须手动解析 swf 中的每个 class),并且要按照我想要的方式使用 classes,我必须进行一些组合。
我认为继承是一种更好的方法,要做到这一点,我需要让每个导出的动画片段都扩展一个 class 来进行标签解析,但我还是不能使用 AS3。
查看 Haxe 生成的代码,我看到在编译目标代码之前(例如 HTML5),因为我设置了 generate="true"
属性,OpenFL 创建了 classes 设置为从 swf 导出。
如果我更改文件以扩展 class 而不是 openfl.display.MovieClip
并将其发送给 Haxe 编译器,我就会得到预期的行为。
最后的 "wall" 是如何在不必手动更改每个生成的文件的情况下自动执行此操作(这会破坏自动化的唯一目的)?
摘自 Singmagesty(Joshua Granick,OpenFL 创始人)在 OpenFL 社区论坛 this post 中的回答:
... cleanest solution is to have your own format.swf.lite.MovieClip
class in a classpath you include after the SWF library. Make the modifications you need there ...
我正在尝试将在 Flash/Animate 中制作的一些动画集成到 OpenFL 应用程序中。
为此,我使用了 OpenFL SWF 库。在我的 project.xml 我有这个:
<haxelib name="swf" />
<library path="assets/library.swf" prefix="View" generate="true" preload="true" />
到目前为止,还不错。
问题是我无法在我的 swf 中使用 stop();
(或任何其他类型的时间轴脚本)控制动画,因为 SWF 库还不支持它。
我目前的解决方案涉及框架标签。
简单的说,我就是在主时间线的labels中添加特殊的值,然后在Haxe中读取。
这可行,但不是自动的(我必须手动解析 swf 中的每个 class),并且要按照我想要的方式使用 classes,我必须进行一些组合。
我认为继承是一种更好的方法,要做到这一点,我需要让每个导出的动画片段都扩展一个 class 来进行标签解析,但我还是不能使用 AS3。
查看 Haxe 生成的代码,我看到在编译目标代码之前(例如 HTML5),因为我设置了 generate="true"
属性,OpenFL 创建了 classes 设置为从 swf 导出。
如果我更改文件以扩展 class 而不是 openfl.display.MovieClip
并将其发送给 Haxe 编译器,我就会得到预期的行为。
最后的 "wall" 是如何在不必手动更改每个生成的文件的情况下自动执行此操作(这会破坏自动化的唯一目的)?
摘自 Singmagesty(Joshua Granick,OpenFL 创始人)在 OpenFL 社区论坛 this post 中的回答:
... cleanest solution is to have your own
format.swf.lite.MovieClip
class in a classpath you include after the SWF library. Make the modifications you need there ...