NMEでhtml5にエクスポートする際にTextFieldの中央寄せができない

つい1週間ほど前にHaxeの勉強を始めました。

ついでにクロスプラットフォーム開発のために、NMEを使っています。


そのときに

var textField = new TextField ();
textField.text = "aaa";

var textFormat = new TextFormat ("_sans", 30, 0x333333);

textField.width = 100.0;
textFormat.align = TextFormatAlign.CENTER;
    
textField.setTextFormat (textFormat);

のようなコードを書いてhtml5向けにビルドして実行しても、TextFieldの幅の設定がちゃんと設定されず、よくわからない大きな値になり、センタリングされた文字列は遥か右の彼方に飛んでいってしまったりします。

TextFieldにはtextWidthと言うのもありますが、そちらの設定でも、またどちらを設定しない場合でも、幅の設定はよくわからない大きな値が与えられて、センタリングできません。

そのため、NMEでhtml5とそれ以外の環境へビルドする場合、次のようにセンタリングを行う必要がありそうです。

var textField = new TextField ();
textField.text = "aaa";

var textFormat = new TextFormat ("_sans", 30, 0x333333);

#if (js)
var w = Lib.current.stage.stageWidth;
var h = Lib.current.stage.stageHeight;

textField.x = (w - textField.width) / 2;
textField.y = (h - textField.height) / 2;

#else
textField.width = 100.0;
textFormat.align = TextFormatAlign.CENTER;
#end

textField.setTextFormat (textFormat);

jsの場合は自力でセンタリングします。

NMEでの開発はクロスプラットフォーム開発ではありますが、自分が出力したい環境によってちょっとずつ動作が違ったり、出来る事に差があったりするようなので注意が必要なようです。(今、Machtml5flashで出力してみながら、おかしくなっていないか毎回確認しながらなので、結構苦労しています。。。Mac用では動いていてもhtml5では動かないとかは良くあります。)


ちなみに現状、簡単なシューティングゲームを作ってみています。まだまだしょぼいですが。
https://github.com/naokirin/nme-shoot

あまり最適化とかは考えていません。なのでhtml5用のものはかなり重くなったりします。また今のところMachtml5flash向けにはビルドできるようなアプリケーションとして作っていくつもりです。NMEはiOSAndroid用にもビルドできますが、流石に現状はキー入力なのでスマホ系OS向けはある程度完成してからにしようと思っています。

広告を非表示にする