ActionScriptとは

ActionScriptとは

ActionScriptでできること
  • タイムラインに関係なく動くアニメーションを作る
  • ユーザーインターフェースの作成に役立てる
  • サーバーアプリケーションとデータのやりとりをする
  • サウンド・ビデオをストリーミング配信する

ActionScriptを学ぶ理由

  • 各ユーザーが個別の体験を得られる環境の提供
  • ムービークリップとそのプロパティに対するより柔軟な制御
  • ムービー内の要素の、プログラムによる(タイムラインを使わない)アニメーション化
  • フォームやチャットプログラムなどを作成するためのデータ入出力
  • 時間経過や現在の日付に反応する動的なプロジェクトの作成
  • サウンドのボリュームやパンの動的な制御
ActionScript の 6W1H
  1. What「何がしたいのか」を考える
  2. How「どうすればよいのか」を考える
  3. When「動きの流れ」を考える
  4. Who「それぞれの役割」を考える
  5. What「それぞれの関係」を考える
  6. Write「Script」を書いてる
  7. Why「なぜ動かないか」を考える

HTML5Flashの機能比較


ActionScriptの実行環境

コンパイラ型とインタプリタ
  • どちらも人間が記述したテキスト形式
  • 正確には「ソース・プログラム」と呼びます
  • ソース・プログラムはそのままではコンピューターには理解できないため、「オブジェクト・プログラム」と呼ばれるコンピューターが直接実行できる形式に変化する必要があります
  • オブジェクト・プログラムの中身はコンピューターのCPUが直接実行できる形式です
  • 機械用の言語という意味で、「機械語マシン語)」と呼びます


コンパイラ

  • ソース・プログラムを「コンパイル」という処理を行なって一気にオブジェクト・プログラムに変換します
  • その処理を行うプログラムのことを「コンパイラ」と呼びます
  • ソース・プログラムはテキストファイルですが、オブジェクト・プログラムは「バイナリファイル」です


インタプリタ



ActionScriptは、両方の機能をもつ中間のタイプです。
AVM (ActionScript Virtual Machine)と呼ばれる仮想環境で動作するマシン語のコードです。
インタプリタ型の言語のように手軽に使用できるプログラム言語のことを「スクリプト言語」と呼びます。

アクションの種類

アクションには2種類の記述の方法があります。

  1. オブジェクトアクション
  2. フレームアクション

※ActionScript3.0は、フレームアクションのみ

オブジェクトアクション

  • ムービークリップやボタンに直接割り当てる
  • 記述したアクションは、そのインスタンスにだけ作用する
  • どのオブジェクトが何を実行するのか、直感的にわかりやすい
  • あとで見直したとき、どのオブジェクトにどんなアクションを書いたのかわからなくなりやすい
  • アクションに制限がある
オブジェクトアクションの書き方
  • ステージ上のインスタンスを選択し、アクションパネルに記述する

フレームアクション

  • メインのタイムラインもしくはムービークリップのタイムラインのキーフレームに書き込む
  • ターゲットパスを多用するため、どのインスタンスに何を実行させるのかわかりにくい
  • アクションに制限がない
フレームアクションの書き方
  • アクションの記述用レイヤーを作成
  • タイムラインの空白キーフレームを選択し、アクションパネルに記述する

アクションパネル

初心者は、いま書いているActionが「フレーム」になのか「オブジェクト」になのかがわからないときがあります。
まず、「アクションパネルの左上」に注意してみましょう。


フレームアクション


オブジェクトアクション



初心者の記述ミスの原因は、記述しているところが「フレーム」か「オブジェクト」かを確認せずに記述をはじめることです。

演習

【A01】


変数を使った計算式を書き、出力パネルに結果を表示させなさい。

10×(8+12)÷4 の値は?

var num1:Number = 10;
var num2:Number = 8;
var num3:Number = 12;
var num4:Number = 4;

total = num1 * (num2 + num3) / num4;

trace(total);

【A02】


「車Aの時速は100km」「車Bの時速は140km」
東京←→大阪の距離は560km

どちらが何時間早く着くか求めなさい?

var speedA:Number = 100; //Aのスピード
var speedB:Number = 140; //Bのスピード
var distance:Number = 560; //東京→大阪間の距離

	//時間を求める計算式
	timeA = distance / speedA;
	timeB = distance / speedB; 

	ans = timeA - timeB

trace(ans);

【A03】


「ビールを12杯:1杯500円」「ウーロン茶を4杯:1杯300円」「サラダを2皿:1皿600円」「チキンを2皿:1皿800円」
「ピザを2枚:1枚800円」
これを5人で割り勘にしたときの一人あたりの金額を求めなさい。

var beer:Number = 500; //ビールの値段
var uron:Number = 300; //ウーロン茶の値段
var salad:Number = 600; //サラダの値段
var chicken:Number = 800; //チキンの値段
var pizza:Number = 800; //ピザの値段

total = (beer * 12) + (uron * 4) + (salad * 2) + (chicken * 2) + (pizza * 2);// 合計を計算

var ninzu:Number = 5;
hitoribun = total / ninzu; //一人当たりの金額

trace("一人当たりの金額は"+hitoribun+"円です。");

【A04】


自分の氏名を出力パネルに表示しなさい。

var seiStr:String = "山本";
var naStr:String = "";

shimeiStr = seiStr + naStr;

trace("私の名前は、" + shimeiStr + "です。");