as3 Air - AddChild可以工作,但是是slooooooooooow

时间:2013-03-20 16:39:03

标签: actionscript-3 flash air flash-cs6

我正在创建一个应用程序,当按下按钮时,会在舞台上添加一张非常大的图片(它比屏幕大,但可以被用户拖动)

当按下按钮时,图片(好吧,movieClip)确实出现了,它可以被拖得很好,里面的按钮可以正常工作。

问题是按下按钮和出现的图像之间有大约6秒的暂停。我正在使用一个.fla文件进行发布和编译(现在让我们称之为Main.fla),另一个用于保存所有图形。然后使用此embed命令添加图形:

[Embed (source = "assets/graphic.swf", symbol = "Content")]
private var Content:Class; 
private var _content:*;

我有这些行声明了所有变量(在类定义和构造函数之间)我认为嵌入它就像在编译时加载它一样。这是真的?按下按钮时可能导致这种延迟的原因是什么?

如果我不能减少延迟,我的另一个想法是制作一些旋转圈或某些东西告诉用户,“嘿,别担心。它正在加载!”< / p>

2 个答案:

答案 0 :(得分:1)

如果缓慢在addChild,您可以更早地将资产添加到舞台并将其可见性设置为false,然后单击该按钮时将其设置为true。显然这是一个小小的黑客,但可能足以满足您的需求。

var asset:MovieClip;

private function init():void
{
    asset = new Content();
    assset.visible = false;
    addChild(asset);

    button.addEventListener(MouseEvent.CLICK, onMouseClick);
}

private function onMouseClick(e:MouseEvent):void
{
   asset.visible = true;
}

答案 1 :(得分:0)

嵌入SWF可能不是导致延迟的原因。或者更确切地说,如果将SWF导入FLA,则可能不会更好。这是在设备上吗?您可能需要设计不同的加载资产的方式,或者对加载动画感到满意。

如果主要K尺寸来自大图像,您可以考虑将其加载到段中,从最初可见的部分开始。