Conversion d'animation Flash en Cocos2D

Abstrait

Ce dont j'ai besoin, c'est d'une technique, avec une animation Flash unique, mais en couches, pour exporter la position et la rotation de chaque clip key dans chaque image en XML.

Code à lire dans cette information dans un format prêt pour cocos2d gagnerait beaucoup de time mais n'est pas nécessaire car je sais comment y parvenir.

Nos artistes dessinent souvent des vectors en utilisant Flash et ont des animations magnifiques et printingnantes. Notre technique dans le passé pour mettre cet art dans nos jeux est d'exporter les animations séparées comme une séquence de png, les coller dans une feuille de sprite, et les transformer en CCAnimations.

Cette technique fonctionne bien et nous pouvons get beaucoup d'art dans la limite de téléchargement de 20 Mo sur l'air grâce aux spritesheets et au pvrtc. Comme nous grandissons, cependant, nous cherchons à faire des jeux plus grands et meilleurs, et cela signifierait plus d'art!

Ce que je voudrais accomplir maintenant est une réduction de masse de la quantité d'art en utilisant une technique de keyframing pour imiter le comportement de Flash, enlevant des morceaux d'art en double.

En utilisant la technique actuelle, un personnage prendrait:

Une séquence de 10 images (par exemple une résolution de 100 * 300 pixels, 30k pixels) aurait 10 humains complets dans chaque position. (pour un total de 1000 * 300 résolution, 300k pixels pour une animation )

Dites 5 animations similaires pour un total de 1,5 million de pixels

Le résultat souhaité pour le même personnage:

1 jambe droite: (40 * 30, 1200 pixels)

1 jambe gauche: (40 * 30, 1200 pixels)

1 torse (50 * 50, 2500 pixels)

1 arm gauche (40 * 30, 1200 pixels)

1 arm droit (40 * 30, 1200 pixels)

1 tête (30 * 30, 900 pixels)

Total (8200 pixels) pour toutes les animations

Et un file xml pour expliquer la transformation de chaque partie pour chaque image.

Ma connaissance de Flash est limitée. J'ai exporté BEAUCOUP d'art, donc ce n'est pas un problème, mais je n'ai pas beaucoup d'expérience dans Actionscript ou dans l'export d'autres informations. J'ai remarqué l'option Export Motion as XML mais elle ne fournit pas les informations dont j'ai besoin (elle ne traverse pas les enfants des clips pour get leur transformation).

Le côté Objective-c est less un problème, je sais comment parsingr XML, bien que si quelqu'un l'a déjà écrit, je serais très reconnaissant si vous aimeriez partager.

Je n'ai jamais découvert d'outils existants et j'ai fini par apprendre un peu d'ActionScript et écrire moi-même la solution.

Malheureusement, en raison des politiques d'entreprise, je ne serai pas en mesure de partager mon code, mais je vais décrire les étapes que je devais prendre


ActionScript / Flash

  • Parcourez chaque cadre
  • Obtenez les enfants sur la scène sur ce cadre et notez leur transformation
  • Passez par chacun de leurs enfants et notez leur transformation par rapport à leur parent
  • Faites ceci de manière récursive jusqu'à ce que les enfants n'aient pas d'enfants ou que vous ayez atteint un DrawingObject
  • Enregistrer les informations en XML

Art

  • Exportez chaque symbole de la bibliothèque et ajoutez-le à une feuille de sprite. (Je l'ai fait en utilisant JSFL)

Obj-C / Cocos2d

  • Le XML devrait contenir un set d'images avec une list d'enfants pour chaque image et, récursivement, chacun de leurs enfants. Chaque noeud enfant contient des informations de transformation.
  • Lisez dans ce XML, en ajoutant des enfants aux frameworks d'une animation que vous les trouvez et les enfants à leurs parents respectifs. Appliquer les transformations des enfants.

J'espère que cela aide quelqu'un d'autre.

Je suppose que votre question concerne la partie «réduction de masse». Vous devriez absolument jeter un oeil à TexturePacker . Avec TexturePacker vous pouvez créer des atlas de texture qui ne contiennent qu'une seule image de plusieurs frameworks d'animation identiques tout en conservant votre capacité à adresser cette image avec ses noms de files d'origine.

TexturePacker a un exportateur cocos2d et flash, et peut importer à partir des formats de files habituels. S'il y a quelque chose qui ne vous convient pas, vous pouvez contacter l'auteur, Andreas Löw. Il est très réactif et s'engage à fournir le meilleur outil d'emballage de texture possible.

J'ai écrit ma propre solution légère.

Une bibliothèque simple pour exporter et animer des symboles Flash dans iOS / cocos2d, avec exemple inclus.

Workflow:

  • Créez vos animations dans Flash en MovieClips avec des calques animés contenant des symboles charts.
  • Exporter des animations au format PNG JSON + en utilisant le script JSFL inclus.
  • Convertir des files PNG en feuilles de sprite (utilisez vos propres outils, j'utilise – http://www.codeandweb.com/texturepacker )
  • Inclure le (s) file (s) JSON d'animation et les feuilles de sprite dans l'set de l'application.
  • Charger des textures, exécuter des animations multicouches complexes sur les sprites en utilisant des commands simples.

Découvrez-le sur github:

  • FxAnimation pour Cocos2d 2.x
  • FxAnimation pour Cocos2d V3 RC1

Ceci est ma première soumission github et je suis curieux de savoir à quel point les gens la trouvent utile, alors faites le moi savoir.