基本上,我正在开发Flash游戏,我希望能够将mod加载到游戏中。每个mod都是一个带有嵌入式xml文件的.swf文件,该文件包含有关mod(名称,版本,主类等)的所有信息,然后实例化该主类(扩展了一个类插件)。我有一个模拟基本上我想要做的事情(根据我的Java经验),但我不太清楚嵌入等事情,有人可以指导我吗?
粗略的例子:
//Loads the .swf file
private var i:int = 0;
private static function onLoadComplete(e:Event) {
//xml would (supposedly, not too sure how this works) be the embedded xml file
var pluginMain:Class = getDefinitionByName(e.target.content.xml.Main[0]) as Class;
var plugin = new pluginMain();
//initiate() is a function of my class Plugin, which plugin should extend
plugin.initiate(this);
plugins[i] = plugin;
i++;
}
答案 0 :(得分:0)
您可以使用具有正确MIME类型的Embed
标记在SWF中嵌入XML文件。直接在下面定义的类变量将在实例化时包含嵌入文件的数据。这是一个嵌入XML文件的示例文档类,在加载时实例化它,并在完成后调度'READY'事件:
package {
import flash.display.Sprite;
import flash.events.Event;
public class Mod extends Sprite {
[Embed(source="../xmldir/mod_data.xml", mimeType="application/octet-stream")]
public var ModData:Class;
public static const READY:String = "READY";
public var modXml:XML;
public var ready:Boolean = false;
public function Mod() {
data_init();
}
private function data_init():void {
var modDataXML:XML = XML(new ModData());
ready = true;
dispatchEvent(new Event(READY));
//trace(modDataXML.Main[0]);
}
}
}
您可以在Loader
的{{1}}媒体资源中收听该活动,也可以查看content
媒体资源,以防其被解雇。