渡す値とその返り値

ActionScript3 で、明らかに正しいはずのコードが動かなくて困ったのでメモ。

きっかけは TextFormat

テキストの見た目を整える場合、 TextFormat を使います。このとき、以下のようなコードを考えます。

var myTextFormat:TextFormat = new TextFormat();
myTextFormat.leading = 10;

var i:int = myTextFormat.leading;

これをコンパイルすると型変換のエラーが発生し、コンパイルエラーになってしまいます。疑問に思って API で leading プロパティを調べてみたところ、このように記述されていました。

leading : Object
行間の垂直の行送りを示す整数です。

そう、セットする値は整数値なのに、戻ってくる値は Object になっています。上のコードを動作させるには、明示的にキャストする必要があるようです。

var myTextFormat:TextFormat = new TextFormat();
myTextFormat.leading = 10;

var i:int = int(myTextFormat.leading);

もし、こうした型変換のエラーに出くわした時は、まず API を確認するといいかもしれません。