我最近搜索了很多,我发现我可以在编译时将一个外部swf文件加载到我的haxe项目中,并使用movieClips通过它们的ID作为类类型。
那很酷&很好,但是当我实例化一个有图层的MovieClip时它会如何工作? 我所拥有的是具有图层,图像层和图像层上的文本层的MovieClip。
那么,这可以实现吗?我会看到movieClips的实例(图像和文本吗?)
答案 0 :(得分:1)
让我们首先根据代码剖析闪存术语
图层:
将图层视为分组z索引。具有多个对象的单个图层还将为每个剪辑分配子z索引(请参阅上下文菜单中的发送到后面选项)
flash IDE为您提供了一个很好的群组界面。锁定一些对象实例,同时处理另一个对象。每个这样的组都是一个层。
在运行时,每个图层(带有它的对象)将被连接成一个单独的列表(显示列表),并按照它们在列表中的位置顺序放置到舞台上。
框架:
帧是由flash播放器的fps属性控制的时间片。因此,如果您有12个fps,则意味着您在该帧时间内放置的任何代码都会在1/12秒内受到关注。
当然,在框架或图层中执行的任何操作都会编写代码。通过在内部调用 addframescript 来添加代码,例如您在IDE中手动输入的代码。
MovieClip
MovieClip类本身实际上是与IDE相关的东西。分割是Sprite Class加上时间轴(帧的集合)加上相关的属性&方法
Movieclip类因此为您提供了诸如currentFrame,totalFrames等的属性。像gotoAndPlay(),stop()等方法与闪存控制类进行交互。
考虑到上述所有内容,您应该会在访问动画片段时在帧中定义的不同时间间隔看到不同的图像/文本/对象。
答案 1 :(得分:0)
我没有在flash中花费很多时间,但你的问题的答案来自于更好地了解Flash / AS3的工作原理,而不是与Haxe有关。
引用this answer:
图层仅存在于Flash IDE中。它们不是Flash Player的显示列表系统的一部分。因此,您无法指定子进入的层。使用addChild()或addChildAt()将子项添加到容器。
这意味着Haxe不会有任何概念,哪个对象在哪个层,AS3也不会。正确的方法似乎是使用具有ID的容器,这些容器由AS3或Haxe识别,然后将子容器添加到容器中。
TLDR:使用容器影片剪辑,而不是图层。