我的意思是当我在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,它也可以工作。
任何人都知道为什么会这样吗?
答案 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文件夹之外的任何内容都不会包含在打包中。