1

我知道有很多关于 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 元标记?我现在真的很沮丧。。

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

谢谢。

4

1 回答 1

-1

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

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

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

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

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

所以,总结一下:

  1. 尝试为您的 fla 制作基类作为 MovieClip
  2. 如果这不起作用,请考虑改变方法
于 2012-09-22T15:48:57.403 回答