Comment intégrer des images dans Actionscript 3 / Flex 3 dans le bon sens?
Je suis en train de créer un jeu où il y a beaucoup d'images sont utilisés dans Actionscript /Flex 3 (Flash). Maintenant que j'ai atteint le concepteur de scène, j'ai à travailler de manière structurelle de l'utilisation des images incorporées (qui doivent être manipulés avec rotation, couleur, etc.).
Malheureusement, après avoir étudié un peu, il semble que vous avez manuellement intégrer des images avant de les utiliser. J'ai actuellement de l'installation comme ceci:
De ressources.en tant que fichier de classe:
package
{
public final class Resource
{
[Embed (source="/assets/ships/1.gif" )]
public static const SHIPS_1:Class;
}
}
Donc, juste pour un navire-je donc pour avoir:
Mettre l'image dans le bon dossier avec le nom correct
Nom de la même façon dans la Ressource.en tant que fichier
Créer la constante du même nom dans la Ressource.en tant que fichier
Même si ce devrait être possible en mettant simplement le fichier dans un dossier spécifié.
Pour rendre les choses encore pire, j'ai encore de l'appeler à l'aide:
var test:Bitmap = new Resource.SHIPS_1();
Il doit y avoir de meilleures façons de gérer les ressources lors de la création de très vaste d'applications? Imaginez que j'ai besoin de milliers d'images, ce système ne serait tout simplement pas s'adapter.
source d'informationauteur Tom
Vous devez vous connecter pour publier un commentaire.
au lieu de
Utilisation
L'intégration est correct. 😀 la façon dont vous l'utilisez c'est mal 🙂
Adrian
Si vous avez besoin de gérer un grand nombre de ressources que vous pouvez suivre ces 3 étapes:
Les placer dans un décompressé l'archive zip
Incorporer le fichier zip en tant que données binaires:
[Embed(source = 'resources.zip', mimeType = "application/octet-stream")]
Accéder aux ressources à l'aide de FZip
Si vous choisissez une autre méthode qui implique le chargement de fichiers externes sachez que certains jeu flash sites web exigent que les jeux qu'ils hôte pour être contenu dans un seul fichier swf.
C'est vraiment ce que Flash CS4 est pour. Votre chemin semble très bien pour moi - même si je n'utilisez pas de majuscules pour le nom d'une classe, même si c'est une constante. Il suffit de mettre votre tête vers le bas et obtenir le copier-coller!
Sinon, vous pouvez charger les fichiers lors de l'exécution.
C'est vieux, mais depuis que je suis tombé sur elle à la recherche de quelque chose de différent, je vais écrire ici, pour les générations futures : )
- Je utiliser une approche différente. J'ai créer une animation swf avec flash professional et l'importation de tous les graphiques et la marque de tous pour "Exporter pour ActionScript".
Compiler le fichier swf et dans votre projet principal incorporer seulement le swf et d'accéder à toutes les graphismes à travers elle...
Je trouve cette approche beaucoup plus organisée. Pourquoi écrire l'ensemble des ressources de la classe lorsque vous pouvez le faire par l'importation de fichiers de droite? 😉
Je viens de regarder ce tutoriel sur le Starling framework:
http://www.hsharma.com/tutorials/starting-with-starling-ep-3-sprite-sheets/
Il sonne comme spritesheets sont exactement ce que vous cherchez:
Permet de regrouper tous vos textures dans une grande texture qui est appelé spritesheet et de créer un fichier xml qui contient des informations où les textures sont à l'intérieur de la spritesheet. Pour ce faire vous pouvez utiliser cet outil:
http://www.codeandweb.com/texturepacker
Je ne suis pas sûr si vous pouvez l'utiliser pour des projets commerciaux et de la quantité de textures que vous parlez de ne pas sonner comme vous êtes en train de faire cela comme un hobby, de sorte que vous pourriez vouloir vérifier la licence. Il y a une version pro disponible, aussi.
Texturepacker crée deux fichiers: spritesheet.png et spritesheet.xml. Vous venez de copier dans votre projet.
Ensuite, vous ajoutez ce code à l'une de vos classes.
Vous pouvez maintenant accéder à toutes les textures de la spritesheet en appelant
C'est tout simplement génial. Lorsque vous utilisez texturepacker le nom de chacun des sprites vous regroupés dans le spritesheet devient son texturename.
C'est probablement trop tard pour vous aider, mais j'espère que les futurs visiteurs peuvent profiter de cette solution élégante.
Je tiens à souligner que cette réponse est en fait un extrait de sharma tutoriel. Je me suis même senti libre de reproduire le code qu'il utilise dans ses screencast. Tout le crédit va à lui
Cela dépend de la taille de vos images individuelles sont mais vous pouvez les mettre tous dans une image comme un spritesheet. Si vous voulez dessiner un navire en particulier utiliser la bonne xy décalage dans l'image pour que le navire et l'utilisation copyPixels pour l'attirer à votre image.
J'aime faire ma Bibliothèque de classes de ce genre.
J'ai pris GSkinners code pour le singleton: http://gskinner.com/blog/archives/2006/07/as3_singletons.html
[Embed (source="/assets/images/123.png" )]
public static const nom de la classe:la Classe;
Bonne idée, lck
Qui est agréable solution comme la Source-Moteur avec vtf et vmt
vtf = image
vmt = script ( comme xml ou javascript )
Bon, je voudrais suggérer pour TexturePacker, TexturePath ou TextureTarget 😛
Thanky ou pour l'astuce.
Par exemple:
mytexture.js:
xml ou javascript:
Je ne pense pas que parce que la texture par défaut obtient erreur quelque part matexture.png n'existe pas que cela arrive encore une fois 🙂
Comment puis-je le sais parce que l'Actionscript 3 devrait "lire" javascript comme jsBirdge ou ExternalInterface.call();
Est-il possible?
bien meilleure approche
http://itfailed.blogspot.com/2011/02/howt-o-embed-images-in-actionscript-3.html