0

オブジェクトの配列を保存する際に問題が発生しました。これらはすべて同じカスタムクラスであり、リスト内のオブジェクトのクラスタイプを失うことなく、LSOからその配列を再読み込みします。

カスタムクラスの単一のオブジェクトを格納し、関数を使用して正しいクラスタイプでロードする方法を知っていますが、registerClassAlias()これをオブジェクトの配列に適用できないようです。

messageListという配列を保存しようとしています。各要素は、gameLevelというプロパティを持つカスタムクラスGameMessageです。LSOをロードした後、次のようなことをしようとしています。

trace("0th message is from level " + GameMessage(messageList[0]).gameLevel);

そして、私はこのような例外を取得しています:

TypeError:エラー#1034:Type Coercionが失敗しました:Object@90fdfa1をGameMessageに変換できません。

を使用してGameMessageクラスを登録しました

registerClassAlias("GameMessage", GameMessage);

メッセージのリストではなく、1つのメッセージを保存/ロードしようとすると、すべてが機能します。

この問題を解決する方法についての助けをいただければ幸いです。

4

1 に答える 1

1

The_asMan が言ったように、AS3 の基本的なデータ型だけで、カスタム クラスを実行できるとは思いません。カスタム クラスでできることは、クラスに fromObject(object) や toObject():Object などのヘルパー関数を設定して、それらを変換できるようにすることです。

于 2011-09-23T04:15:00.837 に答える