0

我最近搜索了很多,我发现我可以在编译时将外部 swf 文件加载到我的 haxe 项目中,并通过他们的 ID 使用 movieClips 作为类类型..

这很酷很好,但是当我实例化一个有图层的影片剪辑时它会如何工作?我所拥有的是带有图层、图像图层和图像图层上的文本图层的影片剪辑。

那么,这可以实现吗?我会看到movieClips的实例(上面的图像和文本)吗?

4

2 回答 2

1

我们先从代码方面来剖析一下 flash 术语,

层数:

将图层视为分组的 z 索引。具有多个对象的单个图层还将为每个剪辑分配子 z 索引(请参阅上下文菜单中的发送到后面选项)

flash IDE 为您提供了一个很好的界面来分组和锁定一些对象实例,同时处理另一个实例。每个这样的组都是一个层。

在运行时,每一层(及其对象)将被连接到一个列表(显示列表)中,并且对象按照它们在列表中的位置顺序放置到舞台上。

框架:

帧是由 Flash 播放器的 fps 属性控制的时间片。因此,如果您有 12 fps,这意味着您在该时间帧中输入的任何代码都会在 1/12 秒内受到关注。

当然,您在框架或层内所做的任何事情都会编写代码。例如,您在 IDE 中手动输入的代码是通过在内部调用addframescript来添加的。

影片剪辑

MovieClip 类本身实际上是一个与 IDE 相关的东西。拆分为 Sprite 类加上时间线(帧的集合)以及相关的属性和方法。

因此,Movieclip 类为您提供了 currentFrame、totalFrames 等属性以及 gotoAndPlay()、stop() 等方法,以与 flash 控制类进行交互。


综合考虑以上所有因素,您应该期望在访问影片剪辑时在帧中定义的不同时间间隔看到不同的图像/文本/对象。

于 2013-01-26T09:04:28.043 回答
0

我没有花很多时间在 Flash 上,但您的问题的答案来自对 Flash/AS3 的工作原理有更好的了解,而与 Haxe 的关系不大。

引用这个答案

层仅存在于 Flash IDE 中。它们不是 Flash Player 显示列表系统的一部分。所以你不能指定孩子进入哪一层。使用 addChild() 或 addChildAt() 将子级添加到容器中。

因此,这意味着 Haxe 不会有任何概念,即哪个对象位于哪一层,AS3 也不会。正确的做法似乎是使用带有 ID 的容器,这些 ID 可以被 AS3 或 Haxe 识别,然后将子级添加到容器中。

TLDR:使用容器影片剪辑,而不是图层。

于 2013-01-26T04:59:48.380 回答