シンタックス

言語のシンタックスは、実行可能なコードを記述する際に遵守する必要がある一連の規則を定義します。

大文字と小文字の区別

ActionScript 3.0 は、大文字と小文字を区別する言語です。 スペルが同じで大文字か小文字かだけが異なる識別子は、異なる識別子と見なされます。 例えば、次のコードは 2 つの異なる変数を生成します。

var num1:int; 
var Num1:int;

ドットシンタックス

ドット演算子( . )は、オブジェクトのプロパティまたはメソッドにアクセスする方法を提供します。ドットシンタックスを使用すると、インスタンス名の後にドット演算子とプロパティまたはメソッドの名前を付けたものを使ってクラスのプロパティまたはメソッドを参照できます。 例えば、次のようなクラス定義があるとします。

class DotExample 
{ 
    public var prop1:String; 
    public function method1():void {} 
}

ドットシンタックスを使用して、次のコードで作成されたインスタンス名を使用する prop1 プロパティと method1() メソッドにアクセスできます。

var myDotEx:DotExample = new DotExample(); 
myDotEx.prop1 = "hello"; 
myDotEx.method1();

パッケージを定義するときに、ドットシンタックスを使用することができます。 ドット演算子を使用してネストされたパッケージを参照します。 例えば、EventDispatcher クラスは、flash というパッケージ内でネストされている events というパッケージにあります。 次の式を使用して、events パッケージを参照することができます。

flash.events

この式を使用して、EventDispatcher クラスを参照することもできます。

flash.events.EventDispatcher

スラッシュシンタックス

ActionScript 3.0 では、スラッシュシンタックスはサポートされていません。スラッシュシンタックスは、ActionScript の以前のバージョンで、ムービークリップまたは変数のパスを指定するために使用されていました。

リテラル

リテラルは、コードに直接表示される値です。次の例は、すべてのリテラルを示します。

17 
"hello" 
-3 
9.4 
null 
undefined 
true 
false

リテラルをグループ化して、複合リテラルを形成することもできます。 配列リテラルは、角括弧( [] )で囲まれ、カンマを使用して配列エレメントが区切られます。

配列リテラルを使用して配列を初期化することができます。 次の例では、配列リテラルを使用して初期化される 2 つの配列を示します。 new ステートメントを使用して、複合リテラルを Array クラスのコンストラクターにパラメーターとして渡すことができますが、ActionScript コアクラスの Object、Array、String、Number、int、uint、XML、XMLList、および Boolean のインスタンスをインスタンス化するときに、リテラル値を直接割り当てることもできます。

// Use new statement. 
var myStrings:Array = new Array(["alpha", "beta", "gamma"]); 
var myNums:Array = new Array([1,2,3,5,8]); 
 
// Assign literal directly. 
var myStrings:Array = ["alpha", "beta", "gamma"]; 
var myNums:Array = [1,2,3,5,8];

リテラルは汎用オブジェクトの初期化にも使用できます。 汎用オブジェクトは Object クラスのインスタンスです。 オブジェクトリテラルは、中括弧( {} )で囲まれ、カンマを使ってオブジェクトプロパティが区切られます。各プロパティはコロン( : )で宣言されます。コロンにより、プロパティ名とプロパティ値が区切られます。

new ステートメントを使用して汎用オブジェクトを作成し、オブジェクトリテラルをパラメーターとして Object クラスコンストラクターに渡すか、宣言するインスタンスにオブジェクトリテラルを直接割り当てることができます。次の例では、新しい汎用オブジェクトを作成し、3 つのプロパティ( propA propB 、および propC )を使ってオブジェクトを初期化する 2 種類の代替方法を示します。各プロパティの値は、1、2、および 3 に設定されます。

// Use new statement and add properties. 
var myObject:Object = new Object(); 
myObject.propA = 1; 
myObject.propB = 2; 
myObject.propC = 3; 
 
// Assign literal directly. 
var myObject:Object = {propA:1, propB:2, propC:3};

セミコロン

セミコロン( ; )を使用してステートメントを終了することができます。セミコロンを省略した場合は、コンパイラーはコードの各行が 1 つのステートメントであると見なします。セミコロンを使用してステートメントの終了を示すことに慣れているプログラマーが多いので、セミコロンを使用してステートメントを終了するとコードが読みやすくなります。

セミコロンを使用してステートメントを終了すると、1 行に複数のステートメントを配置することができますが、こうするとコードが読みにくくなることがあります。

括弧

ActionScript 3.0 では、括弧( () )に 3 つの使用方法があります。1 つ目は、括弧を使用して、式内の演算の順序を変更します。括弧内にグループ化された演算は、常に最初に実行されます。 例えば、括弧は次のコードの演算の順序を変更するために使用されます。

trace(2 + 3 * 4); // 14 
trace((2 + 3) * 4); // 20

2 つ目は、次の例に示すように、括弧にカンマ演算子( , )を使用して、一連の式を評価し、最後に実行された式の結果を返します。

var a:int = 2; 
var b:int = 3; 
trace((a++, b++, a+b)); // 7

3 つ目は、次の例に示すように、括弧を使用して 1 つまたは複数のパラメーターを関数またはメソッドに渡します。この例では、 trace() 関数にストリング値を渡します。

trace("hello"); // hello

コメント

ActionScript 3.0 コードは、単一行コメントと複数行コメントの 2 種類のコメントをサポートします。 このコメントメカニズムは、C++ や Java のコメントメカニズムに似ています。 コンパイラーは、コメントとしてマークされたテキストを無視します。

単一行コメントは、2 つのスラッシュ( // )で始まり、その行の最後までです。例えば、次のコードには単一行コメントが含まれています。

var someNumber:Number = 3; // a single line comment

複数行コメントは、スラッシュとアスタリスク( /* )で始まり、アスタリスクとスラッシュ( */ )で終わります。

/* This is multiline comment that can span 
more than one line of code. */

キーワードと予約語

予約語とは、単語が ActionScript で使用するために予約されているので、ユーザーがコードで識別子として使用できない単語です。 予約語には、コンパイラーによってプログラム名前空間から削除されるレキシカルキーワードが含まれます。レキシカルキーワードを識別子として使用すると、コンパイラーはエラーを報告します。次の表は、ActionScript 3.0 のレキシカルキーワードの一覧です。

as

break

case

catch

class

const

continue

default

delete

do

else

extends

false

finally

for

function

if

implements

import

in

instanceof

interface

internal

is

native

new

null

package

private

protected

public

return

super

switch

this

throw

to

true

try

typeof

use

var

void

while

with

シンタックスキーワードと呼ばれるいくつかのキーワードがあります。このキーワードは識別子として使用できますが、コンテキストによっては特別な意味になります。次の表に、ActionScript 3.0 シンタックスのキーワードを示します。

each

get

set

namespace

include

dynamic

final

native

override

static

さらに、将来の予約語と呼ばれる識別子もいくつかあります。これらの識別子は ActionScript 3.0 では予約されていませんが、その一部は ActionScript 3.0 を組み込んだソフトウェアでキーワードとして扱われることがあります。これらの識別子の多くはコードで使用可能ですが、使用しないことをお勧めします。今後のバージョンの言語でキーワードとして表示される可能性があるからです。

abstract

boolean

byte

cast

char

debugger

double

enum

export

float

goto

intrinsic

long

prototype

short

synchronized

throws

to

transient

type

virtual

volatile

定数

ActionScript 3.0 では、定数を作成するために使用する const ステートメントがサポートされています。定数は、変更できない固定値を持つプロパティです。 定数には値を 1 回だけ割り当てることができますが、定数の宣言のきわめて近くで割り当てる必要があります。 例えば、定数がクラスのメンバーとして宣言されると、宣言の一部としてのみ、またはクラスコンストラクター内でのみ、その定数に値を割り当てることができます。

次のコードは、2 つの定数を宣言します。 1 つ目の定数 MINIMUM には、宣言ステートメントの一部として値が割り当てられます。2 つ目の定数 MAXIMUM には、コンストラクター内で値が割り当てられます。strict モードでは初期化時にのみ定数値を割り当てることができるので、この例は standard モードでのみコンパイルされることに注意してください。

class A 
{ 
    public const MINIMUM:int = 0; 
    public const MAXIMUM:int; 
 
    public function A() 
    { 
        MAXIMUM = 10; 
    } 
} 
 
var a:A = new A(); 
trace(a.MINIMUM); // 0 
trace(a.MAXIMUM); // 10

他の方法で定数に初期値を割り当てようとすると、エラーが発生します。 例えば、クラス外部にある MAXIMUM の初期値を設定しようとすると、ランタイムエラーが発生します。

class A 
{ 
public const MINIMUM:int = 0; 
public const MAXIMUM:int; 
} 
 
var a:A = new A(); 
a["MAXIMUM"] = 10; // run-time error

ActionScript 3.0 では、使用する広範囲の定数が定義されます。表記規則により、ActionScript の定数には大文字だけを使用し、単語はアンダースコア文字( _ )で区切ります。例えば、MouseEvent クラス定義では、マウス入力に関連するイベントを表す定数にこの命名規則を使用します。

package flash.events 
{ 
    public class MouseEvent extends Event 
    { 
    public static const CLICK:String = "click"; 
    public static const DOUBLE_CLICK:String = "doubleClick"; 
    public static const MOUSE_DOWN:String = "mouseDown"; 
    public static const MOUSE_MOVE:String = "mouseMove"; 
    ... 
    } 
}