Flash CS3 ドキュメンテーション |
|||
| ActionScript 3.0 のプログラミング > ActionScript 言語とシンタックス > シンタックス | |||
言語のシンタックスは、実行可能なコードを記述する際に遵守する必要がある一連の規則を定義します。
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 のインスタンスをインスタンス化するときに、リテラル値を直接割り当てることもできます。
// new ステートメントを使用する 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 つのプロパティ (propA、propB、および propC) を使ってオブジェクトを初期化します。プロパティの値はそれぞれ 1、2、および 3 に設定されます。
// new ステートメントを使用する
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";...}}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000049.html