[AS]TextField.textにNumber型のデータをStringにキャストせずに入れる方法
通常テキストフィールドのtextプロパティにはString型のデータを入れなくてはならない。
以下のように書くとエラーとなるのは既知。
//FlashIDEでのメインタイムラインにダイナミックテキストを配置 //インスタンス名:_txt //メインタイムラインフレームアクション _txt.text = 1000;
1067: 型 int の値が、関連しない型 String に暗黙で型変換されています。
ここでエラーにならず代入できちゃうケースがあることに気付いた。
やりかたは簡単TextFieldをMovieClipでラップする。
//FlashIDEでのメインタイムラインにMovieClipを配置 //インスタンス名:_mc //_mcのタイムラインにTextFieldを配置 //インスタンス名:_txt //メインタイムラインのフレームアクション _mc._txt.text = 1000;
これはエラーにならずにTextFieldにちゃんと文字が表示される。
ちょっと気持ちわるい。
Tweet
2 Comments
dynamicなクラスであるMovieClipインスタンスのプロパティとしてアクセスした時点で、その存在もデータ型もスルーされるからではないでしょうか。以下の場合にも、エラーは生じません。
var _array:Array = [_txt];
_array[0].text = 1000;
var temp:* = _txt;
temp.text = 1000;
ご指南ありがとうございます!
そうか、ダイナミックなプロパティとして扱われるからデータ型を指定しなかったときと同じようなことがおきてるということなのですね。
至極納得できました!!