シンタックス

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

サブトピック

大文字と小文字の区別
ドットシンタックス
スラッシュシンタックス
リテラル
セミコロン
括弧
コメント
キーワードと予約語
定数

大文字と小文字の区別

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 クラスコンストラクタに渡すことができますが、Object、Array、String、Number、int、uint、XML、XMLList、Boolean の ActionScript コアクラスのインスタンスをインスタンス化すると、リテラル値を直接割り当てることもできます。

// 新しいステートメントを使用する
var myStrings:Array = new Array(["alpha", "beta", "gamma"]);
var myNums:Array = new Array([1,2,3,5,8]);

// 直接リテラルを割り当てる。
var myStrings:Array = ["alpha", "beta", "gamma"];
var myNums:Array = [1,2,3,5,8];

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

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

// 新しいステートメントを使用する
var myObject:Object = new Object({propA:1, propB:2, propC:3});

// 直接リテラルを割り当てる。
var myObject:Object = {propA:1, propB:2, propC:3};

詳細については、ストリングの作成正規表現の概要、およびXML 変数の初期化を参照してください。

セミコロン

セミコロン (;) を使用してステートメントを終了することができます。セミコロンを省略した場合は、コンパイラはコードの各行が 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; // 単一行コメント

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

/* これは複数行のコードにまたがる
複数行コメント */

キーワードと予約語

予約語は、コードで識別子として使用することができない単語です。これは、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 には、コンストラクタ内で値が割り当てられます。

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; // ランタイムエラー

Flash Player API では、さまざまな定数が定義されています。表記規則により、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";
    ...
  }
}

Flex 2.01