getDefinitionByName() で ReferenceError: Error #1065 が出る場合


たとえば、以下のようなコードがあるとする。

ex1
var clazz:Class = getDefinitionByName('com.example.classes.Hoge');

このコードを実行したとき、以下のエラーが出る場合がある。

ex2
ReferenceError: Error #1065: 変数 Hoge は定義されていません。
    at global/flash.utils::getDefinitionByName()

どうも、あらかじめメモリ上に Hoge クラスがロードされていないために発生しているっぽい。

なので、以下のようにあらかじめ Hoge クラスがメモリ上にロードされるようにしてあげると解決する。

ex3
import com.example.classes.Hoge;

// あらかじめクラスをロードさせる
Hoge;

var clazz:Class = getDefinitionByName('com.example.classes.Hoge');