我可以在.swf中保留xml数据吗?

时间:2011-07-09 00:07:49

标签: xml actionscript-3 air flash-cs4

我有一个.swf文件,它的所有资源都是通过xml加载的,以使文件模块化。但是,当我尝试将已发布的.swf文件移动到另一个目录时,我需要将xml文件和所有资产作为额外的行李。

有没有办法创建一个可以在发布期间加载这些资产的.swf并保留它们?我正在尝试制作另一个.swf,将其加载到那个,然后使用Adobe Air更新所有内容,但我不认为这是正确的方向。

我宁愿避免使用包装器,但如果没有其他选项,我会调查它。

3 个答案:

答案 0 :(得分:1)

您可以将XML嵌入到已编译的SWF中:

[Embed(source="data.xml", mimeType="text/xml")]
protected const XmlClass:Class;

var xml:XML = XML(new XmlClass());
trace(xml.toXMLString());

或者,您只需将XML粘贴为ActionScript类的成员:

package
{

    public class XmlData
    {

        public static var xml:XML =
            <root>
                <child name="etc..." />
            </root>;
    }
}

希望有所帮助。

答案 1 :(得分:0)

查看“.sol”文件。它们或多或少是Flash文件的可变数据库(一些Flash游戏使用它们存储您的信息以供将来访问)。唯一的问题是,如果您将程序移动到另一台计算机,它也必须移动。除此之外,我不知道其他方式,但也许其他人可能会这样做?

编辑:经过深思熟虑 - 或许您可以考虑使用远程SQL数据库来存储您的信息吗?

答案 2 :(得分:0)

杰森是对的。 您还可以使用

嵌入(包含在已编译的 .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

N.B。:compile = publish