【问题标题】:flash AIR app cannot load child swfs on device, please assistflash AIR 应用程序无法在设备上加载子 swf,请协助
【发布时间】:2013-08-19 07:34:51
【问题描述】:

我已经为这个问题苦苦挣扎了好几个星期,但无法解决。我有一个非常简单的 Flash AIR 应用程序(创意云,AIR 3.8):它所做的只是通过单击开始按钮来加载外部 SWF 电影。它在测试/PC 中工作正常,但是当我发布到设备时,外部 swf 不会加载。

这里是调用外部 swfs 的主时间轴上的代码:

 //start button

 start_button_TRI_coelophysis.addEventListener(MouseEvent.CLICK,     
 fl_ClickToLoadUnloadSWF_01_3,false,0,true);

 import fl.display.ProLoader;
 import flash.events.Event;

 var fl_ProLoader_01:ProLoader;
 var fl_ToLoad_01:Boolean = true;

function fl_ClickToLoadUnloadSWF_01_3(event:MouseEvent):void
{
if(fl_ToLoad_01)
{
    fl_ProLoader_01 = new ProLoader();
    fl_ProLoader_01.load(new URLRequest("dinofilms/triassic_coelophysis.swf"));

 fl_ProLoader_01.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete_01)
    addChild(fl_ProLoader_01);
    fl_ProLoader_01.x = 0;
    fl_ProLoader_01.y = 144;
}
else
{
    if(fl_ProLoader_01!=null) {
        removeChild(fl_ProLoader_01);
        fl_ProLoader_01.unloadAndStop();
        fl_ProLoader_01 = null;
    }
}
fl_ToLoad_01 = !fl_ToLoad_01;

}

function onComplete_01(e:Event):void {
e.currentTarget.content.addEventListener(Event.ENTER_FRAME,OEF_01);
}

function OEF_01(e:Event):void {
if(e.currentTarget.currentFrame==e.currentTarget.totalFrames) {
    e.currentTarget.stop();
    e.currentTarget.removeEventListener(Event.ENTER_FRAME,OEF_01);

    removeChild(fl_ProLoader_01);
    fl_ProLoader_01.unloadAndStop();
    fl_ProLoader_01 = null;
}
}

我在 30 个不同的帧上调用了大约 30 个不同的电影,这就是我使用“proLoader_01”之类的标签的原因,所以我不会复制它们。所有外部 swfs 当然也列在包含的文件中。

【问题讨论】:

  • 您确定这些 swf 已打包到您的应用中吗?
  • 是的,当然 - 我只是将它们全部删除并再次添加它们。 “开始”按钮代码有问题吗?或者,您可以指向多少个外部文件?
  • 我在 AIR 支持页面上找到了这个:blogs.adobe.com/airodynamics/2012/11/09/…“对于本地打包的二级 SWF:本地二级 SWF w/o ABC Works(需要进行微小更改)。微小的更改是加载 SWF 时,应用程序域应与主 SWF 的域相同,即 ApplicationDomain.currentDomain。”这对你来说意味着什么吗?有谁明白这一点,有人可以帮忙吗?我正在使用 AIR 3.8。谢谢!!!!
  • 是的,swfs 肯定是打包在应用程序中的。这是该面板的屏幕截图:distanttrain.com/issues.png
  • Fiona,AIR 支持页面意味着您需要包含一个明确的 LoaderContext。因此,您对 load 的调用应如下所示: yourLoader.load("someurl", new LoaderContext(false, ApplicationDomain.currentDomain, null));

标签: actionscript-3 flash air


【解决方案1】:

你需要改变

fl_ProLoader_01.load(new URLRequest("dinofilms/triassic_coelophysis.swf"));

fl_ProLoader_01.load(new URLRequest("dinofilms/triassic_coelophysis.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));

在 iOS 下,您的所有 SWF 都必须加载到当前应用程序域中,即ApplicationDomain.currentDomain

【讨论】:

  • 这个应该可以工作,除非正在加载的 .swf 文件包含 actionscript 代码。 (iOS沙盒不允许外部代码运行)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
相关资源
最近更新 更多