【インタビュー】

「ActionScript 3はさらに進化する」 - ActionScriptマスター コリン・ムック氏

1 AS3は非プログラマにとって難しい?!

    矢澤哲  [2008/01/22]

    ActionScript(以下AS)3が発表されてから1年以上経つが、早々とAS3に乗り換えてそのメリットを享受している人がいる一方で、クラスの構成やイベントの扱いが変ったことに戸惑い、足踏みしているデベロッパーもいる。そこでAS3のエキスパートであるコリン・ムック氏にAS3の特徴と、今後について聞いてみた。

    ActionScriptマスター コリン・ムック氏

    AS3は必要とする言語だけ使うことができる

    ――AS3はパフォーマンスの向上などのメリットがある一方で、よりプログラミング的になったため非プログラマにとって難しくなったと感じている人がいるのですが、これについてはどうお考えですか。

    AS2と比べて難しくなったというのは誤解があると思います。ASをすでに10年に渡って使っているお客様がたくさんいます。ですからAS3では、いきなり大きな変更を加えるのではなく、古いバージョンをお使いの人にもちゃんと使えることを目標にしてきました。

    そこで戦略として、古いタイプのプログラミングをタイムラインでサポートし続けると同時に、新しい機能も追加し、オブジェクト指向型のプログラミング言語を公式なカタチにしていくことにしました。たしかに難しくなったと感じる方がいるかも知れませんが、AS3の言語の中でも自分が必要とする部分だけを使えばいい、逆にそこだけで使えるということをご理解いただきたいと思います。

    はじめに古いコードが新しいコードと全く同じに使えるという例をお見せしたいと思います。 動画を再生する前に、動画がロードされているかどうかをチェックする箇所なのですが、

    AS1では、

    // Code on Frame 4
    if (_framesloaded == _totalframes) {
      gotoAndPlay(6)
    }
    
    // Code on Frame 5
    gotoAndPlay(4);
    

    AS3では、

    // Code on Frame 4
    if (framesLoaded == totalFrames) {
      gotoAndPlay(6);
    }
    
    // Code on Frame 5
    gotoAndPlay(4);
    

    で、アンダースコアのある、なし、しか違いがありません。

    同様にムービークリップを水平方向に動かすところですが、 AS1では、

    // Code on frame 1
    setInterval(moveBall, 20);
    
    function moveBall () {
      ball._x += 10;
    }
    

    AS3では、

    // Code on frame 1
    setInterval(moveBall, 20);
    
    function moveBall () {
      ball.x += 10;
    }
    

    これもアンダースコアのある、なし、しか違いがありません。

    一方、ディスプレイリスト、ディスプレイAPIの部分は結構変わっています。ここでは新しいテクニックを学んでいただく必要がありますが、それを学ぶことにはそれなりの価値があります。

    たとえばこれはライブラリから新しいシンボルのインスタンスを作るケースです。 AS1では、

    someParentClip.attachMovie("BallSymbol", "ball1", 0)
    

    コマンドはattachMovie、作りたいシンボルの名前が"BallSymbol"、作成しているインスタンスの名前が "ball1"となっています。

    ところがAS3では、

    someParentClip.addChild(new Ball());
    

    シンボルとしての名前ではなく、"new Ball"というフレーズを使うことで、新しいインスタンスが作成されることになります。このスタイルには2つの興味深い点があります。ひとつはどの言語でもオブジェクトを作るのと同じ手法、同じテクニックを使っているという点。たとえば新しいプログラマが、ライブラリやグラフィックスを学んでグラフィックスを作れるようになったとします。グラフィックスを作るときに覚えた知識をそのまま使ってオブジェクトを作成すればいいんです。もうひとついいたいのは、この"Ball"(新しいグラフィクスのシンボル)はメモリの中に存在するということです。ですからもとのParentオブジェクトにがんじがらめになっているのではなく、addChildをつければどんなParentオブジェクトにも対応できます。ですからオブジェクトをあるParentから別のParentに動かすことができます。

    たとえばユーザインタフェースを書くプログラマなら、3つのドロップダウンリストがあったとして、そのひとつを別のドロップダウンリストに移動することができるのです。このディスプレイリストによって、オペレーションを簡単にプログラミングできるようになり、仕事がラクになります。

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン