actionscript3.0の最近のブログ記事
ダイナミックテキスト(スクリプトで生成した)のテキスト入力が一部のブラウザで日本語入力ができなかったり、
文字入力が全くできない現象に遭遇。
まずMac OSのSafariの場合Flash PLayerがdebuggerだと起こるみたいなので
通常のFlashPlayerに変更したら解決。
あと、Windows XP ,7のChromeの場合は
swfを埋め込むさいの設定でwmodeをtransparentもしくは未設定だと起こるらしく、
wmodeをwindowに設定で解決。
方法:
http://cocoasaurus.com/blog/2009/10/as3textfiled.html
それでもなおらない場合はChrome独自のFLashPlayerが原因と考えられるので、
Chromeの設定から独自のFlashPlayerを無効のすると解決するかも。
Flashで埋め込み日本語フォントを使うと書き出しやロードに時間がかかるので、
外部にフォントシンボルだけのswfファイルを用意してそれを読み込むのを簡単に
できるようにクラスにしてみました。
サンプル
今回仕事でやったときにちょっとつまずいたのでメモ。
XMLを読み込み、文字列をhtmlTextにて表示した際に、XML内に改行(\n,\r)があると思いのほか
改行の幅が大きく見た目がちょっとおかしい状況がありました。
で、下記のように修正したらいけました。
str = str.replace( /\n/g, "</p>" ); str = str.replace( /\r/g, "<p>" ); str = str.replace(/<br \/>/g, ""); tf.htmlText = "<p>" + str + "</p>";
replace()で改行があった場合に<p>タグと取り替えて、<br />とかなにか他に余計なものがある場合は取り除く。
こうすればstyleSheetとかで文字幅も設定できる。
本当はもっと良いやり方があるのかと思いますが、とりあえずこれでいけた。
ただ、後で下記のようにして検証してみたら改行の幅は特に問題なかったです。
var str = "<p>あいうえお<br />かきくけこ<br />さしすせそ<br />たちつてと<br />なにぬねの</p>" var tf:TextField = new TextField(); tf.multiline = true; tf.width = 200; tf.htmlText = str; tf.x = 10; tf.y = 10; addChild(tf);
仕事でやったのでメモ。
private function comma(num):String {
return num.toString().replace( /([0-9]+?)(?=(?:[0-9]{3})+$)/g , '$1,' );
}
忘れてたのでメモ
すぐ忘れるのでメモ。
WinXp IE6でStageのサイズが参照できない。
サイトアクセス時はちゃんと反映されるのですが、F5等でリロードした時に不具合の現象がおきる。
とりあえず、数字で設定すれば問題なく動く。
対処としては読み込みの段階でStageのサイズが取得できるまで処理を待つってことみたい。
詳しくは下記で説明されてます。
崖っぷちWEBデザイナーブログ | stage幅取得のタイミングをテストしてみたhttp://www.y-tti.com/blog/2009/02/stage.php
仕事でやることになったのでサンプルを作ってみました。

