ActionScript帧元数据无法正常工作

时间:2012-09-22 14:01:52

标签: actionscript-3 flash-builder

我知道在ActionScript中有很多关于Frame元数据标签的帖子, 但我仍然没有找到我的问题的答案。

问题是,我在Main类标题上面指定了一个Frame元数据标记:

package gameUI {
...
    [Frame(factoryClass="gameUI.MyPreloader")]
    public class Main extends Sprite { 

        public function Main()
        {
            if (stage)
                init();
            else
                addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void
        { ...

我在同一个包(gameUI)中也有一个名为MyPreloader.as的预加载器类

package gameUI
{
    // imports..

    public class MyPreloader extends MovieClip 
    {
        // private vars ..

        public function MyPreloader() 
        {
            trace('preloader START');
            ...

在我的IDE中,我没有收到任何错误或警告。它编译没有问题。 但是当我运行它时,它只是跳过Frame元标记并只运行Main类的代码。 (MyPreloader构造函数中的跟踪永远不会打印出来。)

我想也许它与编译器设置中指定的某些参数有关。我已经尝试了一些事情,即附加的编译器参数,但它从未起作用。

有谁知道为什么他会忽略Frame metatag? 我现在真的很沮丧..

我正在使用Flash Builder 4.6。 使用Flex SDK 4.6进行编译。

感谢。

1 个答案:

答案 0 :(得分:0)

您的主类是精灵,所以它不能有两个帧。这可能是你问题的一部分。

但是,您可以使用更容易调试的过程来实现最终目标。例如,这是one approach。我个人通常只将默认导出帧设置为10,将微调器放在第1帧并发出play()。

需要在第1帧上编译的唯一资产位于微调器中。然后它会在微调器旋转和资产加载时暂停(因为它必须加载在那里编译的所有内容才能继续)。一旦所有资产都加载完毕,它自然会进入第10帧。我将在第10帧的时间轴上有一个实例,它有一个相关的getter和setter,所以当setter触发时,我知道加载完成了。

对于绝对必须在启动时加载的资产,我只检查“在第10帧导出”(例如,时间轴上从未使用过的声音或视觉对象)。

这种方法的优点是你可以更早地获得真实内容(因为在你可以显示任何内容之前,只有在你的默认帧上编译的资产必须加载),但缺点是显示%进度是没有意义的,因为你不知道在第10帧上编辑了多少电影,需要在它开始之前加载。

所以,总结一下:

  1. 尝试为影片剪辑制作基础类
  2. 如果不起作用,请考虑改变方法