私の問題はタイトルよりも少し複雑です。私は20のフラッシュゲームの地域にいる会社に勤めています。私たちのプレイヤーにはカスタマイズ可能なアバターもあり、ゲーム内で使用されます。AS3 getDefinitionByName - エラー#1065:変数{クラス名}が定義されていません
私たちのプリローダーによって読み込まれ、GameName.swfに渡されるファイルAvatar.swfがあります。私はこのAvatarムービークリップを作り、ファクトリークラスを作成して、私たちがゲーム内で多くのインスタンスを持つことができるようにしたいと思います。
問題なく、ローダーからAvatarムービークリップのインスタンスを取得できます。 AS3のインスタンスからコンストラクタを取得する方法は2つあります。クラス
として1)オブジェクト(myInstanceの).constructorクラス
2など)getDefinitionByName(れるgetQualifiedClassName(myInstanceの))断続的
1作品が、3で約1時間、私はnull参照のエラーを取得します結果のインスタンスによってスローされます。なぜ私は考えていませんが、それは一貫した問題ではありません。スクリプトがそこにあるのとほぼ同じですが、資産ライブラリはそうではありません。デバッグモードとリリースモードの両方で発生します。また、FlashDevelopとCS5.5を使用してコンパイルしたときにも発生します。
2 throwsエラー#1065:変数アバターが定義されていません。これは、私がアバターパッケージをインポートしておらず、アバターのダミーインスタンスを宣言していないためですが、これがすべてのポイントです。たとえば、新しい衣服を追加してアバターを変更した場合、私たちは今まで以上に拡大したゲームのリストをすべて再コンパイルして再コンパイルする必要はありません。言い換えれば、私はすべてのゲームでアバターコードを望んでいない、それは私たちのプリローダーでそれを読み込むのポイントを否定するだろう。
誰にも提案はありますか?
ありがとうございます!
は[ 'ApplicationDomain'(http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e07.html)問題のように聞こえます。他のswfsをどのアプリケーションドメインにロードしていますか? –
私は 'getDefinitionByName()'を使わないでください。それは動作しますが、私はappDomain.getDefinition()で特定のアプリケーションドメインを参照する方が良いと思います。 'getDefinitionByName()'では、ローダーコンテキストで指定したアプリケーションドメインに応じて、現在のスコープにクラスを追加します。代わりに、読み込まれたコンテンツのappドメインから定義をリクエストすることができます。これは、実際に定義されている場合、常に動作します: 'loader.contentLoaderInfo.applicationDomain.getDefinition( 'definition')'。 –