我使用 FlashPro 和 FlashBuilder。我在 AIR 中有一个应用程序,它从 FlashPro 中创建的 SWF 中读取资源。
问题是,如果我在 FlashPro 中更改某些内容并重新加载 swf'a,则什么都没有改变。我得到相同的符号,函数返回相同的数据。
如果我再次运行应用程序并仅加载 swf,那么我可以看到更改。
似乎如果 AVM2 (FlashPlayer) 加载一个类,它确信这个类不会改变它的内容。
我使用类加载器来加载 swf。
有谁知道如何重新加载swf
我的功能:
protected function loadResourceFile() :void
{
if (_resourcesFile != null) {
_resourcesFile.unload();
_resourcesFile = null;
}
var ba :ByteArray = new ByteArray();
var fs :FileStream = new FileStream();
var srcFile : File = File.applicationDirectory.resolvePath(edResourcesSWF.text);
try {
fs.open(srcFile, FileMode.READ); // Otwarcie synchroniczne, można też asynchronicznie - openAsync()
fs.readBytes(ba);
fs.close();
} catch (e :Error) {
Alert.show('Błąd odczytu z pliku: ' + srcFile.nativePath + '\n\n' + e.message, 'Błąd');
return;
}
_resourcesFile = new Loader();
_resourcesFile.contentLoaderInfo.addEventListener(Event.COMPLETE, loadResourceFile_loaded);
_resourcesFile.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadResourceFile_ioErrorHandler);
try {
var context :LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
context.allowCodeImport = true;
context.allowLoadBytesCodeExecution = true;
_resourcesFile.loadBytes(ba, context); // <--- Load SWF
}
catch (e :Error) {
Alert.show('Nie można wczytać pliku zasobów: "' + edResourcesSWF.text + '"\n\n' + e.message, 'Błąd');
}
}