I’ve been using haXe at work for a current project, and while things have been working pretty well so far, one thing proved to be a little more troublesome than we expected. We tried integrating MochiAds highscore API into the game, following hesselboom’s guide, but whatever we did, all we got was a broken game. No MochiAd pre-game ad, nothing, just a white screen. That’s not a good thing, considering that integrating it into an Actionscript project is supposedly a 5-minute job.
To give a little more insight, all game assets are packed into a .swf file using swfmill. The process is automated with a Python script, so all images, sounds and fonts are lumped together into archive.swf. When compiling the haXe code, this .swf file is passed along, so the code gets compiled into the .swf, to produce the final game .swf. Hesselboom’s guide suggested embedding the mochi library and the assets .swfs into one archive .swf. We first tried to just embed the mochi library .swf into our archive .swf, but that didn’t work. We then tried embedding both into a new .swf, but that didn’t work either.
My coworker did get MochiAds working in a new project though, just not in the actual game. So I started analyzing the swfmill output and I noticed something interesting. The fonts were giving trouble. Apparently swfmill can’t handle the case where an embedded .swf file contains already embedded fonts. However, embedding the fonts into the final .swf didn’t solve the problem…
In the end, I tried something silly: changing the embedding order of the library and the assets .swf. Guess what? It worked!
So just in case you’re working with haXe and integrating MochiAds fails – swapping two lines in your swfmill xml file might just do the trick. :)