| パラダイム | マルチパラダイム:オブジェクト指向(プロトタイプベース)、関数型、命令型、スクリプト |
|---|---|
| 家族 | ECMAスクリプト |
| デザイン: | ゲイリー・グロスマン |
| 開発者 | マクロメディア(現在はアドビシステムズに合併) |
| 初登場 | 1998年 |
| 安定版リリース | 3.0 / 2006年6月27日 |
| タイピングの規律 | 強い、静的 |
| 範囲 | 語彙の |
| Webサイト | www.adobe.com/devnet/actionscript |
| 主な実装 | |
| Adobe Flash Player、Adobe AIR、Apache Flex、Scaleform GFx | |
| 影響を受けた | |
| ハイパートーク、JavaScript、Java | |
| 影響を受けた | |
| Haxe、TypeScript [1] | |
| ファイル名拡張子 |
。として |
|---|---|
| インターネットメディアの種類 |
アプリケーション/ecmascript [2] |
ActionScriptは、もともとMacromedia Inc.(後にAdobe社が買収)が開発したオブジェクト指向 プログラミング言語です。HyperCardのスクリプト言語であるHyperTalkの影響を受けています。[3]現在ではECMAScriptの実装となっていますが(つまり、 JavaScriptとして広く知られている言語の構文とセマンティクスのスーパーセットです)、もともとは兄弟言語として登場し、どちらもHyperTalkの影響を受けています。ActionScriptコードは通常、コンパイラによってバイトコード形式に変換されます。
ActionScript は主にAdobe Flashプラットフォームを対象とした Web サイトやソフトウェアの開発に使用され、当初は埋め込まれたSWFファイルの形式でWeb ページで使用されていました。
ActionScript 3は、デスクトップおよびモバイルアプリケーションの開発のためにAdobe AIRシステムでも使用されています。言語自体はオープンソースであり、その仕様は無料で提供されている[4]ほか、オープンソースのコンパイラ( Apache Flexの一部)とオープンソースの仮想マシン(Tamarin)の両方が利用可能です。
ActionScript は、3 次元のビデオ ゲーム ユーザー インターフェイスとヘッドアップ ディスプレイの開発のためにScaleform GFxとともに使用されました。
概要
ActionScript は当初、Adobe Flash (旧 Macromedia Flash) で作成された単純な 2 次元ベクターアニメーションを制御するために設計されました。当初はアニメーションに重点が置かれていましたが、Flash コンテンツの初期バージョンではインタラクティブ機能がほとんど提供されておらず、スクリプト機能も非常に限られていました。後のバージョンでは、Web ベースのゲームやストリーミング メディア (ビデオやオーディオなど) を使用したリッチ Web アプリケーションを作成できる機能が追加されました。今日、ActionScript は Adobe AIR を介したデスクトップおよびモバイル開発に適しており、一部のデータベース アプリケーションやMake Controller Kitなどの基本的なロボット工学で使用されています。
Flash MX 2004 では、 Flash アプリケーションの開発に適したスクリプト言語である ActionScript 2.0 が導入されました。アニメーションを作成するのではなくスクリプトを作成することで、多くの場合、時間を節約できます。また、通常、編集時に高いレベルの柔軟性も得られます。
Flash Player 9 アルファ版 (2006 年) の登場以来、ActionScript の新しいバージョンである ActionScript 3.0 がリリースされています。このバージョンの言語は、Tamarin仮想マシン (旧 ActionScript 仮想マシン 2) のバージョンでコンパイルおよび実行されるように設計されており、これも完全に書き直されました (AVM2 と呼ばれます)。[5]このため、ActionScript 3.0 で記述されたコードは通常、Flash Player 9 以降を対象としており、それより前のバージョンでは動作しません。同時に、ActionScript 3.0 は、ジャストインタイム コンパイラの機能強化により、従来の ActionScript コードよりも最大 10 倍高速に実行されます。[6]
Flashライブラリをブラウザの XML 機能と併用すると、ブラウザでリッチ コンテンツをレンダリングできます。このテクノロジは、AJAX と同様に、非同期 Flash および XML として知られています。Adobe は、動作とプログラミングを ActionScript で行う Flash ランタイム上に構築されたリッチ Web アプリケーションの需要に応えるために、Flex 製品ラインを提供しています。ActionScript 3.0 は、Flex 2 アプリケーション プログラミング インターフェイス ( API ) の基盤を形成します。
歴史
ActionScript は、 Macromediaの Flash オーサリング ツール (後に Adobe Systems によって Adobe Flash として開発)用のオブジェクト指向プログラミング言語として始まりました。Flash オーサリング ツールの最初の 3 つのバージョンでは、限られた対話機能しか提供されていませんでした。初期の Flash 開発者は、「アクション」と呼ばれる単純なコマンドをボタンまたはフレームに添付できました。アクションのセットは、基本的なナビゲーション コントロールで、「再生」、「停止」、「URL 取得」、「gotoAndPlay」などのコマンドが含まれていました。
1999 年の Flash 4 のリリースにより、この単純なアクション セットは小さなスクリプト言語になりました。Flash 4 で導入された新しい機能には、変数、式、演算子、if ステートメント、およびループが含まれます。内部的には「ActionScript」と呼ばれていましたが、Flash 4 のユーザー マニュアルとマーケティング ドキュメントでは、このコマンド セットを説明するために引き続き「アクション」という用語が使用されました。
プレーヤーバージョン別のタイムライン
- Flash Player 2 : スクリプト サポートを備えた最初のバージョン。そのアクションには、タイムライン制御用の gotoAndPlay、gotoAndStop、nextFrame、nextScene が含まれていました。
- Flash Player 3 : 基本的なスクリプト サポートが拡張され、外部SWF をロードする機能(loadMovie) が追加されました。
- Flash Player 4 : 完全なスクリプト実装 ( Actionsと呼ばれる) を備えた最初のプレーヤー。スクリプトは Flash ベースの構文で、ループ、条件、変数、およびその他の基本的な言語構造のサポートが含まれていました。
- Flash Player 5 : ActionScriptの最初のバージョンに含まれており、ECMAScriptに基づくプロトタイプベースのプログラミングを採用し、 [7]完全な手続き型プログラミングとオブジェクト指向プログラミングを可能にしました。デザインベースの開発。
- Flash Player 6 では、イベント処理モデル、アクセシビリティ コントロール、およびスイッチのサポートが追加されました。アクション メッセージ フォーマット(AMF) とリアルタイム メッセージング プロトコル(RTMP)をサポートした最初のバージョンでは、オンデマンドのオーディオ/ビデオ ストリーミングが可能になりました。
- Flash Player 7 : テキスト用のカスケーディングスタイルシート( CSS )スタイルと、クラスベースの継承を備えたECMAScript 4 Netscape Proposal [8]に基づくプログラミング言語であるActionScript 2.0のサポートが追加されました。ただし、ActionScript 2.0はActionScript 1.0バイトコードにクロスコンパイルできるため、Flash Player 6で実行できます。
- Flash Player 8 では、実行時にビットマップ データを制御する API、ファイルのアップロード、ぼかしやドロップ シャドウ用のライブ フィルターを備えた新しいクラス ライブラリを追加することで、ActionScript 1/ActionScript 2 がさらに拡張されました。
- Flash Player 9 (当初は8.5と呼ばれていた)では、ActionScript 3.0 が追加され、 ActionScript Virtual Machine 2 (AVM2) と呼ばれる新しい仮想マシンが導入されました。これは、従来のコンテンツをサポートするために必要だった以前の AVM1 と共存します。このリリースのプレーヤーでは、新しいジャストインタイム(JIT) コンパイラーを含むパフォーマンスの向上が主な目標でした。バイナリソケット、 ECMAScript for XML (E4X) XML 解析、フルスクリーンモード、正規表現のサポートが追加されました。これは、Adobe Flash Player というタイトルのプレーヤーの最初のリリースです。[9]
- Flash Player 10(当初はAstroと呼ばれていました):X、Y、Z軸の回転、3D描画API、テクスチャマッピングなどの基本的な3D操作が追加されました。Adobe Pixel Benderを使用してカスタムフィルターを作成する機能。いくつかの視覚処理タスクがGPUにオフロードされるようになったため、各フレームのレンダリング時間が大幅に短縮され、特にH.264ビデオでフレームレートが向上しました。新しいサウンドAPIにより、これまで不可能だったフラッシュでのオーディオのカスタム作成が可能になりました。[10]さらに、Flash Player 10は、Real Time Media Flow Protocol (RTMFP)によるピアツーピア(P2P)通信をサポートしています。
- Flash Player 11 : このバージョンでの主な追加機能は、Windowsデスクトップ、Macデスクトップ、iOS、Android 、その他の主要プラットフォーム向けのStage3Dベースの高度な(グラフィックカードで加速された)3D機能です。iOSプラットフォームやその他のデスクトップ以外のプラットフォームでは、互換性が大幅に向上しました。その他の機能には、カメラのH.264エンコーディング、ネイティブJSONサポート、3次ベジェ曲線、安全な乱数ジェネレーター、 SWFファイルのLZMA圧縮、一部のコード実行を他のプロセッサスレッドにオフロードするワーカー、グラフィックカードで加速されたカメラフィードレンダリング、メモリ組み込み関数とパフォーマンス分析、ActionScriptコンパイラ2.0、およびその他の小さな追加機能があります。[11]
- Flash Player 11.2 : 2012 年 3 月にリリースされ、ゲームおよびビデオ市場にとって重要な機能の追加に重点が置かれています。リリースに含まれる機能には、次のものがあります。マウス ロックのサポート。マウスの右クリックと中央クリックのサポート。コンテキスト メニューの無効化。Adobe AIR 経由の Apple iOS および Android 向けのハードウェア アクセラレーション グラフィック/Stage 3D のサポート。ハードウェア アクセラレーション コンテンツの可用性を拡張するために、より多くのハードウェア アクセラレーション ビデオ カードのサポート (2008 年 1 月から)。新しい Throttle イベント API (Flash Player がコンテンツをスロットル、一時停止、または再開するときにイベントをディスパッチします)。PC 上のマルチスレッド ビデオ デコード パイプライン。これにより、すべてのデスクトップ プラットフォームでのビデオの全体的なパフォーマンスが向上します。デバッグ プレーヤーでのプレミアム機能の使用の通知。リリース プレーヤーではコンテンツが制限なく実行されます。
- Flash Player 11.3 : 2012 年 6 月にリリースされ、ゲーム市場にとって重要な機能を有効にするとともに、開発者からの一般的な機能リクエストに対応することに重点を置いています。このリリースに含まれる機能の一部を以下に示します。フルスクリーン モードでのキーボード入力のサポート。低遅延オーディオを操作するためのオーディオ サポートの改善。Stage 3D コンテンツのテクスチャを段階的にストリーミングする機能。Firefoxでの Flash Player の保護モード。フレーム ラベル イベント。BitmapData をJPEGおよびPNG形式に圧縮するためのサポート。Mac OS X App Storeアプリケーション サンドボックス要件のサポート。Stage 3D のテキスト ストリーミング サポート。GPUドライバーの詳細に関する拡張情報。高品質 API を使用したビットマップ描画 (新規)。マウス イベント API 外でのリリース。Mac OS での Flash Player サイレント更新のサポート。Android 4.0 デバイスでのスタイラスのサポート (Adobe AIR)。iOS での USB デバッグ (Adobe AIR)。iOS シミュレーターのサポート (Adobe AIR)。
- Flash Player 11.4 : 2012 年 8 月にリリースされ、ゲーム市場にとって重要な機能の有効化と、開発者からの一般的な機能要求への対応に重点を置いています。このリリースの機能には、ActionScript ワーカー (別スレッドでの ActionScript の同時実行が可能)、高度なプロファイリングのサポート、 ByteArray のLZMA圧縮サポート、Stage 3D のハードウェア アクセラレーション ビデオ カードのサポート (2006 まで拡張)、Apple iOS をターゲットとする場合の ActionScript パフォーマンスの向上、現在の環境のパフォーマンス機能について通知するパフォーマンス インデックス API、アルファ サポート付きの圧縮テクスチャのサポート、StageVideo.attachCamera API のサポート、iOS (Adobe AIR) のプッシュ通知のサポートなどがあります。
- Flash Player 11.5 : 2012 年 11 月にリリースされ、パフォーマンスの向上と安定性に重点が置かれました。このリリースの機能には、ActionScript ワーカーの共有 ByteArray サポート、Flash Player のリリース ビルドでのデバッグスタック トレース、およびさまざまなバグ修正が含まれます。
- Flash Player 11.6 : 2013 年 3 月にリリースされ、パフォーマンスの向上、セキュリティの強化、安定性に重点を置いています。このリリースの機能には、実行時にグラフィック ベクター データを照会する機能、フルスクリーンの権限ダイアログ ユーザー インターフェイスの改善、iOS で AOT モードで AIR アプリケーションとしてデプロイする場合に実行時に SWF をロードする機能、AIR アプリケーションとしてデプロイする場合に iOS デバイスでサポートされるディスプレイ解像度のよりきめ細かい制御、Flash Professional の HiDPI サポート、および高速メモリ操作/組み込み機能への ActionScript 3 アクセスなどがあります。
- Flash Player 11.7 : 2013 年 6 月にリリースされ、コード名は「Geary」です。このリリースでは、プレミアム ビデオ、ゲーム、セキュリティ、安定性に重点を置いています。このリリースで予定されている機能には、Android キャプティブ ランタイム デバッグ、OUYAコントローラーのサポート、iOS での SWF ファイルのリモート ホスティング、iCloud サポートを向上させるための iOS での共有オブジェクトのバックアップ防止などがあります。
- Flash Player 11.8 : Adobe は、2013 年後半の初めにこのバージョンをリリースする予定で、コード名は「Harrison」でした。このリリースでは、プレミアム ビデオ、ゲーム、セキュリティ、安定性に重点が置かれていました。このリリースの機能には、MovieClips の再帰停止 API や、デスクトップ ブラウザーと Android での GamePad サポートなどが含まれていました。
ActionScript バージョン別のタイムライン
2000 ~ 2004: ActionScript "1.0"
2000 年 9 月の Flash 5 のリリースにより、Flash 4 の「アクション」がさらに強化され、初めて「ActionScript」と名付けられました。[12]これは、JavaScriptとECMA-262 (第 3 版) 標準の影響を受け、この標準のオブジェクト モデルとコアデータ型の多くをサポートする最初の ActionScript バージョンでした。ローカル変数はvarステートメントで宣言でき、パラメータの受け渡しと戻り値を持つユーザー定義関数も作成できます。特に、ActionScript は、ドロップダウン リストやダイアログ ボックス コントロールからアクションを選択して組み立てるのではなく、テキスト エディターで入力できるようになりました。次のリリースであるオーサリング ツールの Flash MX と、それに対応するプレーヤーのFlash Player 6では、言語は基本的に変更されていませんでした。switchステートメントと「厳密な等価性」( === )演算子の追加など、 ECMA-262準拠に近づく小さな変更のみが行われました。 ActionScript とそれ以降のバージョンを区別する 2 つの重要な機能は、緩い型システムとプロトタイプ ベースの継承への依存です。緩い型付けとは、変数が任意のタイプのデータを保持できることを意味します。これにより、スクリプトを迅速に開発でき、特に小規模のスクリプト プロジェクトに適しています。プロトタイプ ベースの継承は、コードの再利用とオブジェクト指向プログラミングのための ActionScript 1.0 のメカニズムです。クラスの共通特性を定義するクラスキーワードの代わりに、ActionScript 1.0 では、オブジェクトのクラスの「プロトタイプ」として機能する特別なオブジェクトを使用します。クラスのすべての共通特性は、クラスのプロトタイプ オブジェクトで定義され、そのクラスのすべてのインスタンスには、そのプロトタイプ オブジェクトへのリンクが含まれます。
2003–2006: ActionScript 2.0
言語の次のメジャーリビジョンである ActionScript 2.0 は、2003 年 9 月に Flash MX 2004 とそれに対応するプレーヤーであるFlash Player 7のリリースとともに導入されました。より大規模で複雑なアプリケーションに適した言語を求めるユーザーの要望に応えて、ActionScript 2.0 では、コンパイル時の型チェックと、キーワードclassやextendsなどのクラスベースの構文が導入されました。これにより、より構造化されたオブジェクト指向プログラミング手法が可能になりましたが、コードは ActionScript 1.0バイトコードにコンパイルされるため、先行する Flash Player 6 でも使用できました。言い換えると、クラスベースの継承構文は、既存のプロトタイプベースのシステムの上のレイヤーでした。ActionScript 2.0 では、型注釈を追加することで変数を特定の型に制限できるため、コンパイル時に型の不一致エラーを検出できます。ActionScript 2.0 では、クラスベースの継承構文も導入されたため、開発者は、 JavaやC++などのクラスベースの言語の場合と同じように、クラスとインターフェイスを作成できます。このバージョンは、ECMAScript第 4 版のドラフト仕様に部分的に準拠しています。
2006–2020: ActionScript 3.0
2006 年 6 月、ActionScript 3.0 はAdobe Flex 2.0とそれに対応するプレーヤーであるFlash Player 9とともにデビューしました。ActionScript 3.0 では言語が根本的に再構築され、まったく異なる仮想マシンが使用されるようになりました。Flash Player 9 には、ActionScript 1.0 および 2.0 で記述されたコード用の AVM1 と、ActionScript 3.0 で記述されたコンテンツ用の AVM2 の 2 つの仮想マシンが含まれています。ActionScript 3.0 では、ハードウェア アクセラレーション( DirectX、OpenGL ) のサポートが限定的に追加されました。
言語の更新により、いくつかの新しい機能が導入されました。
- コンパイル時および実行時の型チェック - 型情報はコンパイル時と実行時の両方に存在します。
- プロトタイプベースの継承システムとは別のクラスベースの継承システムによりパフォーマンスが向上しました。
- パッケージ、名前空間、正規表現のサポート。
- ActionScript 1.0 および 2.0 バイトコードとは互換性のない、まったく新しいタイプのバイトコードにコンパイルされます。
- 改訂された Flash Player API がパッケージに整理されました。
- DOM イベント処理標準に基づく統合イベント処理システム。
- XML処理を目的としてECMAScript for XML (E4X)を統合します。
- Flashランタイム表示リストに直接アクセスして、実行時に表示される内容を完全に制御します。
- ECMAScript第 4 版ドラフト仕様に完全に準拠した実装。
- 動的 3D オブジェクトのサポートは限定的です。(X、Y、Z 回転、テクスチャ マッピング)
フラッシュライト
- Flash Lite 1.0 : Flash Lite は、携帯電話や民生用電子機器向けに特別に開発された Flash テクノロジです。Flash 4 ActionScript をサポートします。
- Flash Lite 1.1 : Flash 4 ActionScript のサポートと追加のデバイス API が追加されました。
- Flash Lite 2.0 および 2.1 : Flash 7 ActionScript 2.0 およびいくつかの追加の fscommand2 API のサポートが追加されました。
- Flash Lite 3 : Flash 8 ActionScript 2.0 およびFLVビデオ再生のサポートが追加されました。
- Flash Lite 4 : ブラウザ プラグインとして Flash 10 ActionScript 3.0 のサポートと、ハードウェア グラフィック アクセラレーションのサポートが追加されました。
空気
Adobe AIRは、Adobeが開発したStage3Dエンジンなどの一部の拡張コンテンツに加え、ActionScriptをサポートしています。ActionScript 3.0で利用できるAPI(アプリケーションプログラミングインターフェース)の数も大幅に増加しています。
構文
ActionScript コードは自由形式なので、作成者が望む空白の量やスタイルで作成できます。基本的な構文はECMAScriptから派生しています。
アクションスクリプト2.0
次のコードは、準拠しているどのプレーヤーでも機能し、深さ 0、画面上の位置 (0, 0) (ピクセル単位) に、幅と高さが 100 ピクセルのテキスト フィールドを作成します。次に、textパラメータが " Hello, world "文字列に設定され、プレーヤーに自動的に表示されます。
createTextField ( "greet" , 0 , 0 , 0 , 100 , 100 ); greeting . text = "Hello, world" ;
外部の ActionScript 2.0 クラス ファイルを作成する場合、上記の例は次のようにGreeter.asという名前のファイルに記述できます。
クラスcom.example.GreeterはMovieClipを拡張します{ public function Greeter ( ) { var txtHello : TextField = this.createTextField ( " txtHello " , 0 , 0 , 0 , 100 , 100 ) ; txtHello.text = " Hello , world" ; } }
アクションスクリプト3.0
ActionScript 3.0 の構文は ActionScript 2.0 と似ていますが、オブジェクトを作成するための API セットが異なります。以下のスクリプトを以前の ActionScript 2.0 バージョンと比較してください。
var txtHello : TextField = new TextField ( ); txtHello.text = " Hello World " ; this.addChild ( txtHello ) ;
最小限の ActionScript 3.0 プログラムは、プログラミング言語と Flash統合開発環境(IDE) の分離が進んだため、多少大きく複雑になる可能性があります。
次のファイルをGreeter.asと仮定します。
パッケージcom.example { flash.text.TextFieldをインポートします。flash.display.Spriteをインポートします。
パブリッククラスGreeter はSpriteを拡張します{パブリック関数Greeter () { var txtHello : TextField = new TextField (); txtHello . text = "Hello World" ; addParent ( txtHello ); } } }
Apache の Flexフレームワークを使用する場合、ActionScript 3 はMXMLファイルでも使用できます。
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx= "http://ns.adobe.com/mxml/2009" xmlns:s= "library://ns.adobe.com/flex/mx/polysylabi" xmlns:mx= "library://ns.adobe.com/flex/mx" layout= "vertical" creationComplete= "initApp()" >
<fx:Script>
<![CDATA[
public function initApp (): void { // タイトルに「Hello, world!」メッセージを出力します title . text = " Hello, World!" ; } ]]> </fx:Script>
<s:Label id= "title" fontSize= "54" fontStyle= "bold" /> </s:Application>
データ構造
データ型
ActionScript は主に、他のデータ型を作成するために使用される「基本」または「シンプル」なデータ型で構成されています。これらのデータ型は、Javaデータ型と非常によく似ています。ActionScript 3 は ActionScript 2 を完全に書き直したものなので、データ型とその継承が変更されています。
ActionScript 2のトップレベルデータ型
- 文字列: 「Hello World」などの文字のリスト
- 数値: 任意の数値
- ブール値: 「true」または「false」のみになる単純なバイナリ ストレージ。
- オブジェクト: オブジェクトは、すべての複合データ型が継承するデータ型です。これにより、メソッド、関数、パラメーター、およびその他のオブジェクトをグループ化できます。
ActionScript 2 複合データ型
追加の「複雑な」データ型があります。これらはプロセッサとメモリをより集中的に使用し、多くの「単純な」データ型で構成されます。AS2 の場合、これらのデータ型の一部は次のとおりです。
- MovieClip : 表示オブジェクトを簡単に使用できるようにする ActionScript 作成機能。
- TextField : シンプルな動的または入力テキスト フィールド。MovieClip タイプを継承します。
- ボタン: 4 つのフレーム (状態): Up、Over、Down、Hit を持つシンプルなボタン。MovieClip タイプを継承します。
- 日付: 特定の時点に関する情報にアクセスできます。
- 配列: データの線形保存を可能にします。
- XML : XMLオブジェクト
- XMLNode : XMLノード
- LoadVars : Load Variablesオブジェクトは、HTTP POSTおよびHTTP GET変数の保存と送信を可能にします。
- 音
- ネットストリーム
- ネットコネクション
- ムービークリップローダー
- イベントリスナー
ActionScript 3 プリミティブ(プライム)データ型[13]
- ブール値:ブール値データ型には、true と false、または 1 と 0 の 2 つの値のみが可能です。他の値は有効ではありません。
- int : int データ型は、-2,147,483,648 から 2,147,483,647 までの32 ビット整数です。
- Null : Null データ型には、null という 1 つの値のみが含まれます。これは、String データ型と、Object クラスを含む複合データ型を定義するすべてのクラスの既定値です。
- Number : Number データ型は、整数、符号なし整数、および浮動小数点数を表すことができます。Number データ型は、 IEEE標準の 2 進浮動小数点演算 ( IEEE-754 )で指定されている 64 ビット倍精度形式を使用します。Number 型は、-9,007,199,254,740,992 (-2 53 ) から 9,007,199,254,740,992 (2 53 ) までの整数と、Number.MAX_VALUE (1.79769313486231e+308) から Number.MIN_VALUE (4.940656458412467e-324) までの浮動小数点値を格納できます。
- 文字列: 文字列データ型は、16 ビット文字のシーケンスを表します。文字列は、UTF-16形式を使用して、Unicode 文字として内部的に保存されます。以前のバージョンの Flash では、UTF-8 形式が使用されていました。
- uint : uint (符号なし整数) データ型は、0 から 4,294,967,295 までの 32 ビットの符号なし整数です。
- void : void データ型には、undefined という 1 つの値のみが含まれます。以前のバージョンの ActionScript では、undefined が Object クラスのインスタンスのデフォルト値でした。ActionScript 3.0 では、Object インスタンスのデフォルト値は null です。
ActionScript 3のいくつかの複雑なデータ型[13]
- 配列: データのリストが含まれます。ActionScript 3 は厳密に型指定された言語ですが、配列の内容は任意の型にすることができ、取得後に値は元の型に戻す必要があります (型指定された配列のサポートは最近 Vector クラスに追加されました)。
- 日付: 日付/時刻のデジタル表現を含む日付オブジェクト。
- Error : 例外としてスローされたときに実行時エラーを報告できる汎用エラー オブジェクト。
- flash.display:Bitmap : アニメーション化されていないビットマップ表示オブジェクト。
- flash.display:MovieClip : アニメーション ムービー クリップ表示オブジェクト。Flash タイムラインは、デフォルトでは MovieClip です。
- flash.display:Shape : アニメーション化されていないベクターシェイプ オブジェクト。
- flash.display:SimpleButton : 任意のヒット領域を持つ「上」、「オーバー」、「下」の状態をサポートするシンプルなインタラクティブ ボタン タイプ。
- flash.display:Sprite : タイムラインのない表示オブジェクト コンテナー。
- flash.media:Video : 直接 (プログレッシブ ダウンロード) またはストリーミング (RTMP) トランスポートをサポートするビデオ再生オブジェクト。Flash Player バージョン 9.0.115.0 以降では、標準の Flash ビデオ (FLV) コンテンツとともに、H.264/MP4 高解像度ビデオ形式もサポートされています。
- flash.text:TextField : 動的で、オプションでインタラクティブなテキスト フィールド オブジェクト。
- flash.utils:ByteArray : バイナリ バイト データの配列が含まれます。
- flash.utils:Dictionary : 辞書は、任意のデータ型のキーを含めることができるオブジェクトのバリアントです (一方、オブジェクトはキーに常に文字列を使用します)。
- 機能: すべての Flash メソッド定義のコア クラス。
- オブジェクト: オブジェクト データ型は、オブジェクト クラスによって定義されます。オブジェクト クラスは、ActionScript のすべてのクラス定義の基本クラスとして機能します。基本形式のオブジェクトは、キーと値のペアを含む連想配列として使用できます。キーは文字列で、値は任意の型にすることができます。
- RegExp : 文字列の正規表現オブジェクト。
- ベクター: Flash Player 10 以降にパブリッシュするときにサポートされる配列のバリアント。ベクターは、固定長の可能性のある型付きの密な配列 (値は定義済みまたは null である必要があります) であり、取得時に境界チェックが行われます。ベクターは配列よりも型が安全であるだけでなく、パフォーマンスも高速です。
- XML : E4X (標準 ECMA-357) に基づいて改訂された XML オブジェクト。ノードと属性は、ActionScript 2.0 オブジェクトとは異なる方法でアクセスされます (下位互換性のために、XMLDocument というレガシー クラスが提供されています)。
- XMLList : XML クラス内のさまざまなコンテンツ検索用の配列ベースのオブジェクト。
データ型の使用
基本的な構文は次のとおりです。
var変数名: VariableType =新しいVariableType ( param1 、param2 、... 、paramN );
空のオブジェクトを作成するには、次のようにします。
var myObject :オブジェクト=新しいオブジェクト();
あるいは、非公式な言い方をすると:
var myObject = {};
いくつかのタイプは自動的に配置されます:
var myString : String = "Hello Wikipedia!" ; // これにより、変数は自動的に文字列として設定されます。var myNumber : Number = 5 ; // これにより、数値に対して同じことが行われます。var myObject : Object = { param1 : "Hi!" , param2 : 76 }; // これにより、2 つの変数を持つオブジェクトが作成されます。// param1 は "Hi!" のデータを持つ文字列で、// param2 は 76 のデータを持つ数値です。
// これは、配列を自動的に作成するための構文です。
var myArray : Array = [ 5 , "Hello!" , { a : 5 , b : 7 }]; // 3 つの変数を持つ配列を作成します。// 最初 (0) は値が 5 の数値、// 2 番目 (1) は値が "Hello!" の文字列、// 3 番目 (2) は { a: 5, b: 7 } のオブジェクトです。
一部のオブジェクト指向言語とは異なり、ActionScriptではプリミティブ型と参照型を区別しません。ActionScriptでは、すべての変数は参照型です。ただし、Boolean、Number、int、uint、Stringなどのプリミティブデータ型に属するオブジェクトは不変です。[14]
したがって、整数などのプリミティブ型の変数が関数に渡された場合、関数内でその変数を変更しても元の変数は変更されません。関数内では新しい int オブジェクトが作成されるからです。XML などの別の (プリミティブではない) データ型の変数が関数に渡された場合、関数内でその変数を変更すると元の変数も変更されます。新しい XML オブジェクトは作成されません。
一部のデータ型にはリテラルを使用して値を割り当てることができます。
var item1 : String = "ABC" ; var item2 : Boolean = true ; var item3 : Number = 12 ; var item4 : Array = [ "a" , "b" , "c" ]; var item5 : Object = { name : "Actionscript" , version : "3.0" }; var item6 : XML = < node >< child /></ node >; // プリミティブ XML は引用符で囲まれていないことに注意してください
ActionScript の参照は、クラスのインスタンスへのポインタです。参照はオブジェクトのメモリ アドレスを格納します。参照に対する操作は、オブジェクトのメモリ アドレスへの参照の値に従って、そのオブジェクトに対して操作を実行します。ActionScript のすべてのオブジェクトは、直接アクセスされるのではなく、参照を介してアクセスされます。
var item1 : XML = new XML ( "<node><child /></node>" ); var item2 : XML = item1 ; item2 . firstChild . attributes . value = 13 ; // item2 は item1 が指すものを単に指すだけなので、item1 は item2 と等しくなります。// 両方とも次のようになります: // <node><child value="13" /></node>
「delete」キーワードを使用して削除できるのは、オブジェクトへの参照のみです。実際のオブジェクトとデータの削除は、Flash メモリ領域内の既存の参照をチェックする Flash Player ガベージ コレクターによって行われます。何も見つからない場合 (孤立したオブジェクトへの他の参照がない場合)、そのオブジェクトはメモリから削除されます。このため、ActionScript でのメモリ管理には、慎重なアプリケーション開発計画が必要です。
var item1 : XML = new XML ( "<node><child />></node>" ); delete item1 ; // アプリケーション内の他の場所に item1 への参照が存在しない場合は、ガベージ コレクターの次のパスで削除されます。
コード保護
ほとんどのバイトコードファイル形式と同様に、Flash SWFファイルはソースコードとアセットに逆コンパイルできます( Microsoft .NETファイルを逆コンパイルする方法と同様)。一部の逆コンパイラは、作成時に使用された実際のコードに至るまで、元のソースファイルをほぼ完全に再構築できます(ただし、結果はケースバイケースで異なります)。[15] [16] [17]
逆コンパイラに対抗して、ActionScript難読化ツールが導入されました。これは、プログラムの機能と構造を維持しながら、逆コンパイラの出力を破る形式にコードを変換します。高品質の難読化ツールは、識別子の名前変更、制御フローの変換、データ抽象化の変換などの語彙変換を実装し、これらが相まって、逆コンパイラが人間にとって有用な出力を生成するのを困難にします。堅牢性の低い難読化ツールは、逆コンパイラにトラップを挿入します。このような難読化ツールは、逆コンパイラ ソフトウェアを予期せずクラッシュさせたり、理解できないソース コードを作成したりします。[引用が必要]
参考文献
- ^ Nelson, Gary (2020年4月28日). 「ActionScriptがTypeScriptの先駆けとなった経緯」. Medium . 2022年7月9日閲覧。
- ^ RFC 4329 (EcmaScript と互換性のある制限)
- ^ 「Appleの失われた10年、HyperCard、そしてAppleが当時現在のAppleのようであったらどうなっていたか」ZDNet 2011年4月17日。2011年4月21日時点のオリジナルよりアーカイブ。 2014年12月4日閲覧。
- ^ 「ActionScript 3 言語仕様」。2017年3月27日時点のオリジナルよりアーカイブ。2016年11月12日閲覧。
- ^ Brimelow, Lee (2008 年 8 月 18 日)。「ActionScript 3.0 を使用する 6 つの理由」Adobe Systems Incorporated。2010年6 月 18 日閲覧。
- ^ Grossman, Gary; Huang, Emmy (2006 年 6 月 27 日). 「ActionScript 3.0 の概要」. Adobe Systems Incorporated . 2010 年6 月 18 日閲覧。
- ^ 「Standard ECMA-262」。Ecma-international.org 。 2013年4月22日閲覧。
- ^ Waldemar Horwat 編 (2003 年 6 月 30 日)。「ECMAScript 4 Netscape 提案」。Netscape。2007年7 月 11 日時点のオリジナルよりアーカイブ。2019 年4 月 11 日閲覧。
- ^ 「Flash Player | Adobe Flash Player 11 | 概要」。Adobe.com。2013 年 4 月 9 日。2013 年4 月 22 日閲覧。
- ^ 「Adobe Labs – Adobe Flash Player 10.1」。Labs.adobe.com。2010年1月5日時点のオリジナルよりアーカイブ。2009年12月17日閲覧。
- ^ 「Adobe Labs 向け Flash Player 11 および AIR 3 リリースノート」(PDF) 。2011 年 7 月 14 日時点のオリジナル(PDF)からのアーカイブ。
- ^ 「Flash Player 11、AIR 3 リリースノート」。helpx.adobe.com。2016年10月 7 日閲覧。
- ^ ab 「データ タイプの説明 + Flash CS3 ドキュメント」。2007 年 11 月 2 日時点のオリジナルよりアーカイブ。2007 年7 月 13 日閲覧。
- ^ 「Flex 3 – 関数パラメータ」。Livedocs.adobe.com。2009 年 2 月 12 日時点のオリジナルよりアーカイブ。2009 年12 月 17 日閲覧。
- ^ 「別のデコンパイラのサードパーティレビュー」。Flashmagazine.com。2007年10月21日。2017年6月20日時点のオリジナルよりアーカイブ。2013年4月22日閲覧。
- ^ 「ある Flash デコンパイラに関する顧客のコメント」 Topshareware.com 。 2013 年4 月 22 日閲覧。
- ^ 別の Flash 製品に関する顧客コメント 2006 年 8 月 18 日アーカイブ、Wayback Machineより
外部リンク
- 公式ウェブサイト、ActionScriptテクノロジーセンター
- ActionScript 2.0 言語リファレンス 2013 年 1 月 31 日にWayback Machineにアーカイブされました
- ActionScript 3.0 言語とコンポーネント リファレンス
- 言語要素
- パッケージの概要
- 付録
- Flex 3 ライブドキュメント: ActionScript 3.0 のプログラミング
- Adobe – Flash デベロッパー センター
- Adobe Flex SDK
- ウォーレン、トム (2017 年 7 月 25 日)。「Adobe は 2020 年に Flash を最終的に廃止します」。The Verge。2017年 7 月 25 日時点のオリジナルよりアーカイブ。2020 年12 月 16 日閲覧。
