AS3のデータ型がよくわからない
2007年10月18日
ActionScript3のデータ型がよくわからんす。
というのも
というのも
以下のコードは正常にコンパイルされ、正常に動作する
// BoxクラスはSpriteクラスのサブクラス var box:Box = new Box(); var sprite:Sprite = Sprite(box); var box2:Box = Box(sprite); // BoxクラスにあってSpriteクラスに無いプロパティにアクセス trace(box2.hoge); // アクセス可能
Box→Spriteの型変換の時点でhogeプロパティが消えていないということは、オブジェクトの型の情報は、オブジェクトの内容とは別にラベルのように存在するのかなぁ??
ちなみに全く関係の無いクラスだと型変換に失敗する。
以下のコードはStrictモードでも正常にコンパイルされるが、Errorを出して実行が止まる
以下のコードはStrictモードでも正常にコンパイルされるが、Errorを出して実行が止まる
// BoxクラスとEventクラスは全く関係ない var box:Box = new Box(); var evt:Event = Event(box); // -> Error
Error はこんなん
TypeError: Error #1034: 強制型変換に失敗しました。Box@xxxxxxx を flash.events.Event に変換できません。 at xxxx/::xxxxxxxx()
んー、JavaScriptとPHPとRubyしか知らない俺ですけど、AS3のデータ型って、「後付けで作った感」がプンプン臭う。
どうなんでしょうかなぁ