[TROUBLE 77] 「〜暗黙で型変換されています」とうエラーでコンパイルできない | デザインってオモシロイ -MdN Design Interactive-

[TROUBLE 77] 「〜暗黙で型変換されています」とうエラーでコンパイルできない

2024.4.20 SAT

【サイトリニューアル!】新サイトはこちらMdNについて

日々のデザイン現場で発生する問題・難題を解決します!

WEB制作トラブル速戦即決術! 第14回


[TROUBLE 77]
Flashトラブル
「〜暗黙で型変換されています」という
エラーでコンパイルできない

文=加茂雄亮((有)ロクナナ)

A. as演算子で明示的型変換する

このトラブルはas演算子で、型変換を明示的に保証する必要がある。as演算子は左項と右項を評価し、左項が右項のデータ型のメンバーであると評価された場合のみに、左項をそのまま返し、もし評価が否定された場合はnullを返す演算子である。as演算子を用いることで、確実にこのオブジェクトは特定のデータ型の一種であることを保証し、型変換を行うことでトラブルが解決できる。ちなみに、このような型変換(キャスト)は"明示的型変換"と呼ばれ、反対に保証されずに型変換されることを"暗黙的型変換"と呼ばれている。

コンパイルエラーのメッセージ例
コンパイルエラーのメッセージ例

暗黙的型変換の例。一見問題なく見えるが、DisplayObjectContainer.addChild()メソッドの返り値はDisplayObjectクラスのため、Spriteクラスを型指定した変数exampleの間で矛盾が発生する
暗黙的型変換の例。一見問題なく見えるが、DisplayObjectContainer.addChild()メソッドの返り値はDisplayObjectクラスのため、Spriteクラスを型指定した変数exampleの間で矛盾が発生する

エラー回避の例。as演算子でaddChildで返されるDisplayObjectクラスインスタンスが、Spriteクラスのデータ型かを評価し、trueの場合にのみ型変換を施しオブジェクトを返す
エラー回避の例。as演算子でaddChildで返されるDisplayObjectクラスインスタンスが、Spriteクラスのデータ型かを評価し、trueの場合にのみ型変換を施しオブジェクトを返す

同様に非常に陥りやすい一例。Event.targetは指定型がObjectクラスのため、代入する変数clickTargetにMovieClipを型指定しているとエラーが発生する
同様に非常に陥りやすい一例。Event.targetは指定型がObjectクラスのため、代入する変数clickTargetにMovieClipを型指定しているとエラーが発生する

as演算子を利用して、Event.targetを評価する。もしクリックされたオブジェクトがMovieClipなら、オブジェクトが代入される。仮にMovieClipではなくSpriteだったとしたら、nullが代入されることに注意しよう
as演算子を利用して、Event.targetを評価する。もしクリックされたオブジェクトがMovieClipなら、オブジェクトが代入される。仮にMovieClipではなくSpriteだったとしたら、nullが代入されることに注意しよう

[INDEX]
>>> [TROUBLE 73] HTMLファイルを圧縮するとスクリプトが実行されない
>>> [TROUBLE 74] 縦長のページがスクロールバー分だけ左にずれてしまう
>>> [TROUBLE 75] プレゼンテーションの時間がオーバーしてしまう
>>> [TROUBLE 76] 膨大なページのリンクの修正で頻繁にミスが起こる
>>> [TROUBLE 77] 「〜暗黙で型変換されています」とうエラーでコンパイルできない



『web creators』の情報はこちら!>>>

twitter facebook このエントリーをはてなブックマークに追加 RSS
【サイトリニューアル!】新サイトはこちらMdNについて

この連載のすべての記事

アクセスランキング

8.30-9.5

MdN BOOKS|デザインの本

Pick upコンテンツ

現在