2009-07-21 7 views
1

Je développe un jeu avec AS3 et AIR. Je vais avoir une grande quantité d'images que je dois charger pour les éléments d'affichage. Ce serait bien de ne pas intégrer toutes les images dont le jeu a besoin, évitant ainsi de les avoir toutes en mémoire à la fois. C'est correct dans les petits projets, mais cela n'a pas de sens ici.AS3/AIR: Gestion des données d'image au moment de l'exécution

Je suis curieux de connaître les stratégies de chargement des images pendant l'exécution. Étant donné que tous les fichiers sont assez petits et locaux (dans mon projet actuel), les charger sur demande pourrait être la meilleure solution, mais j'aimerais savoir quelles idées les gens ont pour gérer cela.

Pour les points bonus, je suis également curieux de connaître les solutions de chargement des images côté serveur côté demande.

Répondre

0

La solution que je fini par installer sur était de créer une classe de chargement singleton réutilisable qui gère le chargement et le stockage des données sur demande. Il gère les "jobs" qui peuvent être LOCAL ou REMOTE ce qui permet de stocker les références et les données chargées elles-mêmes qui sont mappées dans la classe manager une fois qu'elles sont complètement chargées.

Bien que j'aime vraiment la suggestion de back2dos, gérer la (re) création de SWF chaque fois qu'un actif change n'est pas optimal pour mes besoins.

0

pour votre projet Vous pouvez faire une solution en utilisant amfphp et mysql blob-storage. dans ce lien, vous pouvez comprendre comment mysql blob-stockage.

http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_%28blob_storage%29.xml

et amfphp s'il vous plaît visitez http://www.amfphp.org/

et aussi s'il vous plaît vérifier AMFPHP JPEG en direct Encoder aussi, http://www.bytearray.org/?p=90

+0

Je ne comprends pas très bien comment cela aiderait un projet as3 à charger des images efficacement? N'hésitez pas à clarifier. Il semble que MySQL soit trop exigeant pour le chargement de l'image. Si j'ai besoin d'une structure de données externe, il semble que XML suffirait probablement. – grey

1

une bonne idée serait, de créer des fichiers SWF externes, embarquant images, qui sont susceptibles d'être utilisés ensemble, si cela est possible du tout ... quelque chose comme projectiles.swf, obstacles.swf, enemies.swf, misc.swf .... je ne sais pas ... quelque chose qui a du sens ... peut-être diviser les actifs par leve ls, ou quelque chose ... prendre une interface simple, qui vous permet d'extraire des actifs d'un swf ... par exemple, laissez toujours une classe Assets, avec une méthode statique getAll, qui renvoie un objet, mappant les identifiants de chaîne à les classes correspondantes, vous obtiendrez quelque chose comme:

function onComplete(e:Event) {//this is the handler for the loading operation 
    var map:Object = (e.target as LoaderInfo).applicationDomain.getDefinition("Assets").getAll();//should return something like {"bullet1":Bullet1,"bullet2":Bullet2,...} 
    //do whatever you need to do with it 
} 

avantages:

  • images en obtenir un comprimé contre une autre, de sorte que l'ensemble sera filesize diminué ...
  • vous réduisez considérablement la demande compter sur votre serveur ...
  • vous ne finissez pas avec n-cent fichiers, suivant une convention de nom/chemin, ou même pas (aussi, vous devez avoir un index de fichier quelque part, savoir, quels fichiers existent et lesquels ne le font pas). Le
  • vous pouvez facilement reskin votre application en chargeant un swf différent, au lieu de charger des centaines d'images séparément ...
  • l'avantage final de cette approche est, que vous aurez des classes, que vous pouvez simplement instancier, au lieu de charger des images encore et encore ... la première opération est synchrone, ce dernier n'est pas ... si vous avez vraiment besoin de faire cela, envisager de charger l'image sous forme binaire dans un ByteArray en utilisant URLLoader, puis l'obtenir scène avec Loader::loadBytes ...

vous pouvez générer les swfs sur le serveur en utilisant swfmill, pour automatiser le processus ...

greetz

back2dos

+0

Cela semble être une solution assez viable. J'aime l'idée de faire cela pour les éléments d'interface. C'est une idée totalement solide. Mon seul problème est la catégorisation. La plupart de mes ressources n'ont pas beaucoup de sens à regrouper. J'ai beaucoup de tilesheets pour les zones qui ont été conçues pour être mix-and-match à des fins de conception de niveau. D'autres idées pour une solution non groupée? Aussi, applaudissements pour m'avoir indiqué que je devais faire du swfmill, cela me semble être une approche amicale de l'emballage. Pas idéal pour ce projet, mais je peux imaginer quelques utilisations futures possibles. – grey

Questions connexes