【问题标题】:as3 Air - AddChild works but is slooooooooooowas3 Air - AddChild 有效,但运行缓慢
【发布时间】:2013-03-09 21:32:46
【问题描述】:

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

当按下按钮时,图片(嗯,movieClip)确实出现并且可以很好地拖动,其中的按钮可以工作。

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

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

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

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

【问题讨论】:

  • 为什么在 FLA 中使用 Embed 标签?据我所知,它与将其添加到库中完全相同,但添加到库中更容易(并且可能更有效)。
  • @puggsoy 反编译代码

标签: actionscript-3 flash air flash-cs6


【解决方案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;
}

【讨论】:

  • 嗯。我要试试这个。我在开始时有一部分“构建”所有页面以使它们可滚动。我可以在此处将此图像添加到舞台,并在单击按钮时将可见性设置为 true。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多