Entry: main  << >>
.NETプログラマがActionScript3を触って「なんだこれ」ってなったところ
0
    僕は.NETプログラマなんですが、ActionScript3を触ったときに「なんだこれ」って思った所がいくつかあるのでメモしておきます。


    ・ライブラリがコンパクト
    FlashDevelopで開発しているのでflashパッケージ配下しか見ていませんが、
    ライブラリ自体の大きさがとても小さく、全体を俯瞰できてよい感じ。
    やろうとしていることの範囲が狭いので当然だけど、ホビーユース向けでお手軽な言語だと思います。


    ・オーバーロードがない
    ライブラリのメソッドにやたらオプション引数が使われてるなと思ったら、オーバーロードがない。
    なので、オーバーロードで実現しようとしていることは、原則オプション引数でやらないといけない。
    ダイナミックリンクもないし、多分そこまで困ることはなさそうですね。

    ちなみに、オプション引数を持つメソッドを呼び出すときは、値を指定した引数より左の引数も全部値を指定しないといけません。
    オーバーロードっぽい実装で作る、というアプローチ自体を変えたほうがいいところもあるんだろうなあ。


    ・メソッドの末尾の括弧は省略できない
    .NETでは、引数のないメソッドの戻り値を受け取るときに、括弧を省略できます。
    Dim lowerText As String = text.ToLower
    みたいな感じ。

    AS3でこれをやると、メソッドのアドレスが返ってきます。
    これがなかなか気づきにくい。
    AS3は型変換が結構親切なので、エラーにならずに文字列に変換してくれたりしたので、何が起こっているのか把握するのに手間取りました。

    プロパティは括弧を省略可能です。


    ・dynamicクラスがやばい
    プロパティを増やせるとかわけわからん。あんまり使うことはなさそうです。
    Objectクラスを用いた連想配列はこの仕組みを利用するらしいので、そのときぐらいか。


    ・ジェネリックがない
    List(Of T)クラスみたいな、型指定のコレクションとかがない。
    言語仕様が型に対しておおらかだからなんだろうけど、汎用的なArrayクラスを用いて、要素を参照するときにキャストするしかありません。めんどくさい。

    追記:FlashPlayer10から、vectorクラスがあるらしいというのを教えてもらいました。しっぽ(@tail_y)さんありがとうございました。


    ・値型構造体がない
    .NETのPoint構造体は値型なので、Point型のプロパティから値をPoint型の変数に受け取ったら、
    変数の方の値をいくら変更しても、プロパティには影響がありません。
    AS3のほうは参照型です。同じ操作でプロパティの値が変わります。

    この仕様はどちらも良し悪しなんだけど、キャラクターにLocationプロパティとかをPointで作ったら、それが知らない所で変更されたりしないように気を付けないといけないですね。
    DisplayObjectにLocationプロパティがなくxとyでそれぞれ取得するようになっているのもこれが理由なんじゃないかなあと思います。


    だいたいこのぐらい。
    DisplayObject関係はとても使いやすくできていて、メディア作品向けの言語なんだなーと思います。
    最近何も作ってないんだけどね。スカイリムのせいだな。
    | noppikinatta | 23:26 | comments(0) | trackbacks(0) | - | - |
    Comment








    Trackback