« FlashDevelop3 beta9 で Shader クラスのコードヒントを表示する | メイン | 3 次ベジェ曲線を curveTo() を使って描く »

2008年10月17日

[as3] Player のバージョンによって Array と Vector を使い分ける

FlashPlayer の 10 が正式リリースされたけども
今のところ、一番厄介なのは、おそらく Vector クラスの使用じゃないかと思うわけです。

バージョン 9 でも AS3 は使っているわけですが、9 には Vector クラスは対応していないので、 10 対応で作成したクラスを 9 でも使用したくなったときに、Vector クラスはかなりネックになってしまうんじゃないかと思うわけです。

クライアントから古いバージョンを指定されることはよくあることだと思います。

で、こんな風にすると、一応 Vector と Array をプレイヤーの状況によって使い分けれるんじゃないかなあ と、思ってみたわけです。

function getArrayOrVector(T:Class):Class
{
    var theClass:Class;
    try 
    {
        var classPath:String = getQualifiedClassName(T);
        classPath = classPath.replace("::", ".");
        theClass = getDefinitionByName
            ("Vector.<" + classPath + ">") as Class;
    }
    catch (error:Error)
    {
        theClass = Array;
    }
    
    return theClass;
}

var theClass:Class = getArrayOrVector(int);
var a:Object = new theClass();
trace(getQualifiedClassName(a));

これだと、FlashPlayer のバージョンが 9 の場合は
Array
と出力され、バージョンが 10 だと
__AS3__.vec::Vector.<int>
と出力されます。

ただ、これだと変数の型指定は Object になっちゃうので、
実際どれほどの効果があるのかは謎です。
誰か検証してくれないかなあ。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Player のバージョンによって Array と Vector を使い分ける

このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/517

コメントする


画像の中に見える文字を入力してください。

しばらく時間が経過すると、システム内部と表示されている文字内容に食い違いが発生するようなので、
投稿する前にページをリロードすることをお勧めします。
リロードしてもフォームの内容は維持されます。