【问题标题】:Can I retain xml data in a .swf?我可以在 .swf 中保留 xml 数据吗?
【发布时间】:2011-07-09 00:07:48
【问题描述】:
我有一个 .swf 文件,它的所有资产都通过 xml 加载以使文件模块化。但是,当我尝试将已发布的 .swf 文件移动到不同的目录时,我需要将 xml 文件和所有资产作为额外的行李带上。
有什么方法可以创建一个可以在发布期间加载这些资产并保留它们的 .swf?我目前正在尝试制作另一个 .swf 文件,将其加载到那个文件中,并使用 Adobe Air 更新它以加载所有内容,但我认为这不是正确的方向。
我宁愿避免使用包装器,但如果没有其他选择,我会考虑它。
【问题讨论】:
标签:
xml
actionscript-3
air
flash-cs4
【解决方案1】:
您可以将 XML 嵌入到已编译的 SWF 中:
[嵌入(source="data.xml", mimeType="text/xml")]
受保护的 const XmlClass:Class;
var xml:XML = XML(new XmlClass());
跟踪(xml.toXMLString());
或者,您可以简单地将 XML 粘贴为 ActionScript 类的成员:
包裹
{
公共类 XmlData
{
公共静态变量 xml:XML =
;
}
}
希望对您有所帮助。
【解决方案2】:
查看“.sol”文件。它们或多或少是 Flash 文件的可变数据库(一些 Flash 游戏使用它们来存储您的信息以供将来访问)。唯一的问题是,如果您将程序移动到另一台计算机,它也必须移动。除此之外,我不知道其他方法,但也许其他人可能?
编辑:事后诸葛亮——也许研究使用远程 SQL 数据库来存储您的信息会对您有所帮助?
【解决方案3】:
杰森是对的。
您还可以使用
嵌入(包含在
编译的 .swf 文件中)您的位图资源
[Embed(source="asset.jpg")]
private var BitmapAssetClass:Class
var myBitmapInstance1:Bitmap = new BitmapAssetClass();
var myBitmapInstance2:Bitmap = new BitmapAssetClass();
或 .swf 矢量资源使用:
[Embed(source="assetLibrary.swf", symbol="myFlashCS4SymbolName")]
private var VectorAssetClass:Class
var myVectorInstance1:Sprite = new VectorAssetClass();
var myVectorInstance2:Sprite = new VectorAssetClass();
addChild(myVectorInstance1);
addChild(myVectorInstance2);
这将结束模块化,每次您想要添加单个资产更改时,您都必须重新编译整个应用程序。
hth
注意:编译 = 发布