0
var leaderboardRowVOs:Vector.<LeaderboardRowVO> = new Vector.<LeaderboardRowVO>();

オブジェクトとしてシステムの別の部分に移動し、実際の型にキャストしようとしています

notification.getBody() as Vector.<LeaderboardRowVO> //throwing error
4

2 に答える 2

1

AS3 での型キャストには 2 つの方法があります。

// Casting
// 1: returns null if types are not compatible, 
//    returns reference otherwise
notification.getBody() as Vector.<LeaderboardRowVO>

// Converting    
// 2: throws exception if types are not compatible, 
//    returns reference otherwise
Vector.<LeaderboardRowVO>(notification.getBody())

ケース 1 はエラーをスローしません。そのような動作がある場合は、notification.getBody()メソッドにエラーがあるはずです。

編集: @divillysausages は、実際に別のタイプのオブジェクトを作成するケース 2 について巧妙なコメントをしました。ここではそうではありません。これは、1 つの例外を除いてネイティブ型でほとんど発生することです: Array クラスです。一部のネイティブ クラスには、トップ レベルの変換関数があります。それらの完全なリストについては、adobe livedocsを参照してください。Vector は、適切なタイプのArrayを関数に渡すことにより、この方法でインスタンス化できますVector()

于 2012-05-19T10:20:36.223 に答える
0

ベクトルをオブジェクトにキャストしてからベクトルに戻すことは有効であるため、クラス内のベクトルに何か他のことが起こる必要があります。この簡単なテストはそれを示しています:

var v:Vector.<int> = new Vector.<int>();
v.push(1);
v.push(2);

var o:Object = v as Object;

var v2:Vector.<int> = o as Vector.<int>;

trace(v2[0]); // Output "1"
trace(v2[1]); // Output "2"

したがって、あなたの問題は別の場所にあるはずです。

于 2012-05-19T10:19:41.923 に答える