未在flashdevelop中测试时外部SWF未加载

时间:2016-06-24 17:18:55

标签: actionscript-3 flash

我的意思是当我在flashdevelop中测试它时,外部SWF会加载,但是当我在项目外部有主SWF时,它将不会加载。 (例如:如果我的桌面上有主SWF,它将不起作用)

所以,我试图做一个简单的事情,当我点击一个按钮时,它会加载一个外部SWF。

这是加载外部SWF的功能:

  array(
        'username, password',
        'match', 'pattern' => '/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/',
        'message' => 'Invalid characters in your column.',
    ),

部分是SWF的名称

我在flashdevelop中测试时工作正常,但是如果我将项目文件夹的bin文件夹中的SWF克隆到桌面,它将无法工作。如果我只是在bin文件夹中打开SWF,它也可以工作。

任何人都知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

首先,您应该在加载文件时监听错误,这是最佳做法。

您可以通过执行以下操作来执行此操作:

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

function ioErrorHandler(e:IOErrorEvent):void {
    //file not found, the event (e) will tell you the path it was trying to load and other details
    trace(e);
    //alert the user there was a problem
}

function securityErrorHandler(e:SecurityErrorEvent):void {
    //file was not allowed to load, sandbox issue
    trace(e);
    //alert the user there a problem
}

我对所提供信息的最佳猜测是,您收到了IOError。

您正在将一个兄弟目录中的文件加载到您的程序中,所以看起来您的结构类似于:

  -> YOUR APPLICATION DIRECTORY
     -> BIN
         -> yourProgram.swf

     -> SRC
         -> yourExternalSwfAsset.swf

如果您将整个bin文件夹复制到桌面然后运行yourProgram.swf,为了加载外部swf,桌面上也必须有一个src文件夹(带有其中的外部swf文件)。如果您还没有将该src文件夹复制到桌面,那么这确实是您的问题。

如果您只是将yourProgram.swf直接复制到桌面,则SRC文件夹必须位于桌面的父目录中。

无论如何(即使这不是你最后的问题),你应该将你的程序所需的所有本地资产保存在bin文件夹中(例如移动你的src文件夹和任何文件夹)其他运行时加载的内容到bin文件夹中并取消" ../" URL路径的一部分)。

bin文件夹的整个目的是包含编译程序运行所需的所有内容。如果您最终打包应用程序以制作AIR文件或其他包,则bin文件夹之外的任何内容都不会包含在打包中。