Recherche
Peut être aimerez-vous...
Sections du site
Sites Neamar
Lisez ces articles !
| Problème avec Mochiads et les leaderboards en Flash |
|
| Programmation et tuning - as3 |
| Écrit par Neamar |
| Lundi, 14 Décembre 2009 20:06 |
|
Jeune et moins jeune développeur d'AS3, peut-être compilez-vous des animations Flash depuis votre Linux en utilisant la méthode de Tonton Neamar. Tout d'abord, le problème tel qu'il peut vous tomber dessus : TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul. at mochi.as3::MochiServices$/stayOnTop() at mochi.as3::MochiScores$/showLeaderboard() Il faut reconnaitre que l'API fournie par Mochimedia est concise et efficace... à condition de savoir s'en servir. Le code par défaut fonctionne peut-être pour les heureux possesseurs de l'IDE d'Adobe, mais pour ceux qui utilisent le compilateur AS3 de Flex il faut louvoyer entre les nids de poule pour afficher ces satanées publicités et panneau de meilleurs scores. La définition du problème tient en deux mots : objet dynamique. Pour fonctionner, les objets de Mochi doivent être placés dans un objet d'affichage dynamique, ce qui n'est pas le cas de la majorité des classes (et de Sprite en particulier). Pour la publicité, le message d'erreur est assez explicite et on pense rapidement à créer un MovieClip et à le passer dans le paramètre clip :var Pub:MovieClip = new MovieClip(); addChild(Pub); MochiAd.showInterLevelAd( { clip:Pub, id:"XXX", res:"800x600", ad_started:new Function(), ad_finished: startGame } ); Dans l'ordre : fournir le conteneur (un objet dynamique forcément, un MovieClip fait l'affaire mais vous pouvez aussi créer une sous classe héritant de Sprite avec l'attribut dynamic pour profiter des fonctions de Sprite), l'ID du jeu (normal, c'est documenté chez mochi), la fonction à appeler quand l'afifchage de la pub commence (ici, je ne m'en sers pas et je mets donc un objet inutile) et la fonction à appeler qui reprend le contrôle une fois la pub terminée (startGame dans mon cas). Ces lignes viennent assez facilement en lisant les messages d'erreur renvoyés par Mochi, je ne m'attarderai pas dessus. Ce qui m'importe ici, c'est l'erreur pour les leaderboards, ces systèmes que vous connaissez sûrement qui affichent les meilleurs scores d'un jeu (vous trouverez un exemple ici). En effet, contrairement à la publicité l'erreur est beaucoup moins claire ! Remontez dans votre code à la connexion aux services de mochi, et ajoutez en deuxième paramètre un objet dynamique : var Score:MovieClip = new MovieClip(); addChild(Score); MochiServices.connect("XXX", Score); //Et pour l'afifchage des highscores : MochiScores.showLeaderboard( { boardID: boardID, onClose: gotoMenu, res:"800x600" } ); //Et pour l'affichage des highscores en enregistrant un nouveau score dans le tableau : var score:int=8888; MochiScores.showLeaderboard( { boardID: boardID, onClose: gotoMenu, score:score, res:"800x600" } ); Bon code à vous ! |
| Mise à jour le Dimanche, 24 Janvier 2010 21:37 |

