2011-07-09 3 views
0

J'ai un fichier .swf qui a tous ses actifs chargés via XML pour rendre le fichier modulaire. Toutefois, lorsque j'essaie de déplacer le fichier .swf publié dans un répertoire différent, je dois apporter le fichier xml et tous les éléments d'actif en tant que bagage supplémentaire.Puis-je conserver des données XML dans un fichier .swf?

Est-il possible de créer un fichier .swf qui peut charger ces ressources lors de la publication et les conserver? J'essaie actuellement de faire un autre fichier .swf, de le charger dans celui-là, et d'utiliser Adobe Air pour le mettre à jour avec tout ce qui est chargé, mais je ne pense pas que ce soit la bonne direction.

Je préférerais éviter d'utiliser un emballage, mais s'il n'y a pas d'autre option, je l'examinerai.

Répondre

0

Regardez dans les fichiers ".sol". ils sont plus ou moins une base de données variable pour les fichiers Flash (certains jeux flash les utilisent pour stocker vos informations pour de futures visites). Le seul problème est que si vous déplacez le programme sur un autre ordinateur, il devra également se déplacer. À part ça, je ne connais pas d'autre moyen, mais peut-être que quelqu'un d'autre pourrait le faire? Edit: après réflexion - peut-être qu'il serait avantageux pour vous d'utiliser une base de données SQL distante pour stocker vos informations?

1

Vous pouvez intégrer le XML dans le fichier SWF compilé:

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

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

Ou, vous pouvez simplement coller le code XML en tant que membre d'une classe ActionScript:

 
package 
{ 

    public class XmlData 
    { 

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

espoir qui aide.

+0

+1 Je pense que c'est ce que l'affiche est à la recherche. – Nate

0

Jason a raison. Vous pouvez également intégrer (inclure dans le compilé fichier .swf) vos actifs bitmap en utilisant

[Embed(source="asset.jpg")] 
private var BitmapAssetClass:Class  

var myBitmapInstance1:Bitmap = new BitmapAssetClass(); 
var myBitmapInstance2:Bitmap = new BitmapAssetClass(); 

ou les actifs de vecteur .swf utilisant:

[Embed(source="assetLibrary.swf", symbol="myFlashCS4SymbolName")] 
private var VectorAssetClass:Class  

var myVectorInstance1:Sprite = new VectorAssetClass(); 
var myVectorInstance2:Sprite = new VectorAssetClass(); 

addChild(myVectorInstance1); 
addChild(myVectorInstance2); 

Cela mettrait fin à la modularité et à chaque fois que vous Si vous souhaitez ajouter un changement d'actif individuel, vous devrez recompiler l'ensemble de l'application.

HTH

N.B. .: = compiler publierai

Questions connexes