我知道在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进行编译。
感谢。
答案 0 :(得分:0)
您的主类是精灵,所以它不能有两个帧。这可能是你问题的一部分。
但是,您可以使用更容易调试的过程来实现最终目标。例如,这是one approach。我个人通常只将默认导出帧设置为10,将微调器放在第1帧并发出play()。
需要在第1帧上编译的唯一资产位于微调器中。然后它会在微调器旋转和资产加载时暂停(因为它必须加载在那里编译的所有内容才能继续)。一旦所有资产都加载完毕,它自然会进入第10帧。我将在第10帧的时间轴上有一个实例,它有一个相关的getter和setter,所以当setter触发时,我知道加载完成了。
对于绝对必须在启动时加载的资产,我只检查“在第10帧导出”(例如,时间轴上从未使用过的声音或视觉对象)。
这种方法的优点是你可以更早地获得真实内容(因为在你可以显示任何内容之前,只有在你的默认帧上编译的资产必须加载),但缺点是显示%进度是没有意义的,因为你不知道在第10帧上编辑了多少电影,需要在它开始之前加载。
所以,总结一下: