【FlexSDK】 ActionScript3でインクルードしてみた。そしてクラスも作ってみた。

前回やってみてから長らく放置していた FlexSDK + Action Script 3 のお勉強。ほんのちょびっとだけど進んでみた。
今回やってみたのは、外部の *.as ファイルのインクルードと、超簡単なクラスの作成。

外部の *.as ファイルをインクルードしてみる

ActionScriptを外部化して、インクルードしてみた。インクルードの書き方は次のような感じ。

<mx:Script><![CDATA[
    include "include02.as";
]]></mx:Script>

次のように書いてもよいようだ。

<mx:Script source="include01.as" />

このテストで使ったサンプルは下記。ご参考までに。

超簡単なクラスを作成してみる

まだ詳しくはよくわからないのだが、パッケージ化して、import しないとできないようだ。今回は、sample というパッケージの sample というクラスを作って、インスタンス化するところまでやってみた。

このテストで使ったサンプルは下記。これを見ながら読んでいただいた方がわかりやすいと思われる。。

まず、sample/sample.as というファイルを作って、下記のように書いた。

package sample{
  import mx.controls.Alert;
  public class sample{
    public function sample():void{
      Alert.show('sample() 実行しました。');
    }
    public function test001():void{
      Alert.show('test001() 実行しました。');
    }
  }
}

パッケージ sample の クラス sample に、sample() と test001() という2つのメソッドを実装して、それぞれ Alert.show() でダイアログを出すようにしてある。クラス名と同名のメソッド sample() は、このクラスのコンストラクタ(インスタンス化したと同時に自動的に実行される)になるようだ。

このクラスを呼び出すために、呼び出し側では次の行を書いて読み込む。

import sample.*;

この sample.* は、「sampleというパッケージの、*(全ての)クラスをロードする」という意味らしい。

クラスファイルのファイル名にも意味があって、sample/sample.as は、「sample というパッケージ(←ディレクトリ名で表現)の、sample というクラス(←ASファイル名で表現)を定義する」というような命名規則になっており、この通りのファイル名を付けないと正しくコンパイルできなかった。

これをインスタンス化して、メソッドを実行しているのが下記の記述。

public function instanceTest():void{
  alert('テスト中:1');
  var inst:sample = new sample();
  inst.test001();
  alert('テスト中:2');
}

このうち、

var inst:sample = new sample();

この行でインスタンス化している。インスタンス inst の型は、sample になることに注意。この時点で、コンストラクタ sample() は実行される。

そして、

inst.test001();

ここで test001() を実行している。これで、合計4つのアラートダイアログが立て続けに表示されるはずだ。

ここまでやってみて、ちょっと疑問が起きた。各行で1個ずつ、Alert.show() によるダイアログが出るはず(alert() はショートカットだと思ってください)なのだが、順番が逆に出てしまった。

「ActionScript3は処理が下から順番に進むのか!?」などというありえない憶測をしていたら、こちらの方が答えを教えてくれていた。

// Alert時点で処理が止まる訳ではない。
// => 一番最後に出したAlertが一番手前に出る

JavaScript の alert() は、実行してからOK押すまでの間、処理は停止する。しかし、ActionScript3の Alert.show() は、停止しないそうだ。そして、後に実行されたダイアログが手前に表示されるため、逆向きに処理が進んでいるように見えてしまうようだ。(当然ながら、逆向きに実行されているわけではなかった!)

OK押すまで処理を止めることはできないのかな?
今後の研究課題のひとつにします。

ということで、今日はここまで!

  • ※ちなみに、サンプルに入ってる compile.bat は、コンパイラが "C:\Program Files\FlexSDK_3.3\bin\mxmlc.exe" にインストールされている環境を前提にしています。過去記事『【FlexSDK】 FlexSDK に入門してみた。の巻。』でインストールした手順です。

プロフィール

コヤナギ トモヤ

ウェブ系エンジニアしてます。ウェブデザイナー、ウェブディレクターとしてウェブ制作の仕事に携わり、今はエンジニア職に流れ着きました。誰かのお仕事をちょっとだけ効率化するような支援ツールの開発が好き。オープンソースとMITライセンス大好き。人生後半は自由と民主主義のコントリビューターとして過ごす予定。

ウェブ制作支援ツール Pickles 2 をオープンソースで開発しています。

PHP/JavaScript/NodeJS/nwjs/Laravel/Pickles2/オープンソース/心理学/倫理/自由と民主主義

RSSフィード

ページの先頭へ戻る