ActionScript 3.0の構文復習

AS3の構文について再勉強したのでメモ。
 

AS3の構文

以下では、AS3でクラスを書く時に登場するキーワードに重点を置いて説明している。
 

パッケージ

パッケージを定義するにはpackageキーワードを使用する。AS3では定義済みのクラス名、関数名、定数名は名前の衝突が起こるので使用できないが、パッケージを使うことで名前の衝突を回避することができる。

package sample1.sample2.sample3
{
    //…何らかの実装
}

 
パッケージはディレクトリのような階層構造になっており、上記ではsample1内のsample2内のsample3を指定している。
 

パッケージを使用する

パッケージを使用するには以下のようにimportキーワードを使用して読み込む。

package foo.bar.baz
{
    import sample1.sample2.sample3;
    //…何らかの実装
}

 
 

クラス

クラスを定義するにはclassキーワードを使う。

class Sample {
    //…何らかの実装
}

 
 

関数

関数を定義するにはfunctionキーワードを使用する。クラスにおける関数は「メソッド」と呼ばれる。
書式はfunction 関数名(引数名:引数の型):戻り値の型{ … }となる。

function setDogName(name:String):String{
    dogName = name;
    return dogName;
}

 
 

変数

変数を定義するにはvarキーワードを使用する。var 変数名:変数の型 = 値;のように使用する。
 

var a:int = 1;

 

文字列結合

文字列結合を行うには+を使用する。
 

var a:String = 'SmokyDog';
var b:int = 123;
trace(a + String(b)); //SmokyDog123 を出力
a += String(b);
trace(a); //SmokyDog123 を出力

 
 

定数

定数を定義するには、constキーワードを使用する。
 

class Animal
{
    //普通に宣言
    const DOG:int = 1;

    //静的定数として宣言するとクラスをインスタンス化しなくても外部から参照可能
    public static const CAT:int = 2;
}

 
 

アクセス修飾子

上記で出てきたpublicがアクセス修飾子にあたる。変数やメソッドのアクセス可能範囲を設定する。

アクセス修飾子一覧
アクセス修飾子 アクセス可能範囲
internal(デフォルト) 同じパッケージ内からのみアクセス可能
public クラス内、クラス外のどこからでもアクセス可能
private 同じクラス内からのみアクセス可能
protected 同じクラス、及び子クラス(継承クラス)からアクセス可能

 

class AuthorProfile {
    private var name:String = 'SmokyDog';
    public function getName():String{
        return name;
    }
}

 
 

静的メンバ・静的メソッド

静的メンバ・静的メソッドを定義するにはstaticキーワードを使用する。
 

class AuthorProfile {
    private static var name:String = 'SmokyDog';
    public static function getName():String{
        return name;
    }
}

 
 

インスタンス

クラスのコピー(オブジェクト)を生成するにはインスタンス化を行う。new演算子を使うことで行うことができる。
 

class SmokyDog extends Animal {
    public const SKILL = 'トイレで眠る';
    private var editor:String = 'Vim';

    public function getEditor():String{
        return editor;
    }
}

var player:Animal = new SmokyDog();
var editor = player.getEditor();
var action = player.SKILL;

 
 

抽象化と継承

AS3には抽象クラス(abstract)が存在しないので、抽象クラスに相当する基底クラスを作って、それを継承して抽象クラスのように扱うといった方法で代用する。
 
また、継承を行う為にはextendsキーワードを使用する。
 

class Dog extends Animal {
    function action():String{
        return 'わんわんお';
    }
}

 
 

インターフェースとその利用

インターフェースを定義するにはinterfaceキーワードを使用する。
 

public interface Dog{
    function getAction():int;
    function setAction():void;
}

 
インターフェースを利用するにはimplementsキーワードを使用する。
 

public class SmokyDog imprements Dog{
    public function getAction():int{
        //定義
    }
    public function setAction():void{
        //定義
    }
}

 
 

コンストラクタ

コンストラクタはクラス名と同名のメソッドを使用する。コードが呼び出されるとこのメソッドがコールされる。
 

public class SmokyDog(str:String, num:int):void{
    //プロパティ
    public var prop1:String;
    public var prop2:int;

    //コンストラクタ
    public function SmokyDog():String{
        prop1 = str;
        prop2 = num;
    }
}

 
 

デストラクタ

AS3にはデストラクタが存在しないので、デストラクタに相当するメソッドを作成してそれを呼び出すことで代用する。
 
 

例外処理

例外処理を行うにはtryブロック、catchブロック、finallyブロック、throw文を使用する。
 

try{
    _loader.load(new URLRequest("test.xml")); //エラーが発生する可能性がある処理
    throw new Error("ファイルがありません"); //強制的にthrow文でエラーを投げることもできる
}
catch(err:Error){
    //tryブロックでエラーが発生するか、throw文でエラーが投げられるとcatchブロックの処理が実行される
    trace("エラーが発生:" + err.messeage);
}
finally{
    //必ず実行される処理
    trace("処理終了");
}

 
 
以上
 
 
参考
PHP V5.3 の名前空間を利用して、理解しやすく保守の容易なコードを作成する
AS3:39.静的変数
[AS3.0]例外とエラー処理 at web_studynote
Try…catch…finallyで例外処理を行う | KIYOTY DESIGN BLOG
神風記: try、catchメソッドの基礎
try-catch例外処理ステートメント-Flash/AS3.0 – Flash制作講座フラッシュ制作講習
アクセス修飾子の種類 – Flash ActionScript3.0 簡単に作るコツ

Article written by

コメントを残す