静岡理工科大学 菅沼ホーム ActionScript目次 索引

コンパイルと実行

  まず,必要なソフトウェアをインストールします.本文における説明は,Flex SDK 3 に基づいていますが,コンパイラに関しては,Flex SDK 4 を使用します.Flex SDK 4 を使用するためには,Java 実行環境( JRE,Java Runtime Environment )も必要です.以下,できあがった環境の元,エディタとコマンドプロンプトを利用して開発することを基本に話を進めていきます.なお,ActionScript は,ディレクトリ \flex_sdk_4 にインストールされており,コンパイラ mxmlc にはパスが設定してあるものとします.

  次に,適当なエディタを使用してプログラムを作成します(ここでは,作成したプログラム名を Test.as とする).実行形式のファイルが Test.swf の場合,ソースプログラムのファイル名( Test.as ),及び,以下に示すソースプログラム内における赤字の部分がすべて一致している必要があります.なお,文字コードは,UTF-8 にして下さい.
package {
	import flash.display.Sprite;
	[SWF(backgroundColor="0xeeffee", width="300", height="200", frameRate="30")]   // 必ずしも必要ない
	public class Test extends Sprite {
		public function Test() {
			実際のプログラムが入る
			  ・・・・・
		}
	}
}
		
  次に,コマンドプロンプト上でコンパイルします.
mxmlc -static-link-runtime-shared-libraries=true Test.as
mxmlc -static-link-runtime-shared-libraries=true -debug=true Test.as   // デバッグモード
		
  コンパイルエラーがなくなったら,次のようにして実行します.
C:\flex_sdk_4\runtimes\player\10\win\FlashPlayer Test.swf
		
  実行形式のファイルは,以下に示すいずれかの方法で Web ページに埋め込むことができます.なお,大きさ( WIDTH,HIGHT )や背景色( BGCOLOR )は適当に変更して下さい.

  1. 方法1
    <embed src="Test.swf" quality="high" bgcolor="#eeffee" width="300" height="200">
    			
  2. 方法2
    <object type="application/x-shockwave-flash" width="300" height="200" data="Test.swf">
    	<param name="movie" value="Test.swf">
    	<param name="quality" value="high">
    	<param name="bgcolor" value="#eeffee">
    </object>
    			
ブラウザによっては,いずれかの方法しかうまくいかない場合があります.また,EMBED 要素OBJECT 要素内に記述する必要があるかもしれません.今後のことを考えると,方法2を使用した方が良いと思います.なお,方法2において,基本的には「 data= 」以降の青色の部分は必要ありませんが,Firefox ではこの部分が無いと動作しません.

  プログラムをデバッグする場合,中間結果を出力したいような場合があります.そのような場合,デバッグモードでコンパイルすれば,以下に示すプログラムのように,trace 関数を利用できます.
package {
	import flash.display.Sprite;
	public class Test extends Sprite {
		public function Test() {
			var a : int = 10;
			var b : int = 20;
			var c : int;
			c = a + b;
			trace("10 + 20 は", c, "です");
		}
	}
}
		
しかし,その出力先が,ActionScript のバージョンや OS によって異なり,その設定が面倒です.

  そこで,ここ以降,trace 関数を利用せず,以下に示すプログラム例(ファイル Test.as と Message.as の内容)のように,TextField クラスを利用した Message クラスに中間結果を出力します( Message クラスは,マウスでドラッグすることによって移動可能です).この方法であれば,Web ページに貼り付けた後にも中間結果を出力可能です.なお,以下に示すプログラムにおける Message クラスを含むパッケージ( Message.as )をコピーすれば,どのようなプログラムにおいても利用できます.ただし,場合によっては,他の部品の大きさ等に影響を及ぼす場合がありますので,完成時までには外してください.
          ---------- Test.as ----------
package {
	import flash.display.Sprite;
	[SWF(backgroundColor="0xeeffee", width="300", height="200", frameRate="30")]
	public class Test extends Sprite {
		public var dbg : Boolean = true;
		public function Test() {
			var a : int = 10;
			var b : int = 20;
			var c : int;
			c = a + b;
			if (dbg) {
				var msg : Message = new Message(500, 100);
				addChild(msg);
				msg.tx.appendText("10 + 20 は " + c + "です\n");
			}
		}
	}
}

          ---------- Message.as ----------

package
{
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldType;
	import flash.text.TextFormat;
	import flash.text.TextFormatAlign;
	import flash.events.MouseEvent;
	public class Message extends Sprite
	{
		public var tx : TextField;
		public function Message(w : int, h : int)
		{
			tx = new TextField();
			tx.width = w;
			tx.height = h;
			tx.x = 0;
			tx.y = 0;
			tx.type = TextFieldType.DYNAMIC;
			tx.background = true;
			tx.backgroundColor = 0xffffff;
			tx.border = true;
			tx.borderColor = 0x00ff00;
			tx.multiline = true;
			var tf : TextFormat = new TextFormat();
			tf.size = 20;
			tx.defaultTextFormat = tf;
			addChild(tx);
			addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
		}
		private function onMouseDown(event:MouseEvent):void
		{
			startDrag();
			addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
		}
		private function onMouseMove(event:MouseEvent):void
		{
			event.updateAfterEvent();
		}
		private function onMouseUp(event:MouseEvent):void
		{
			stopDrag();
			removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
			stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
		}
	}
}
		

静岡理工科大学 菅沼ホーム ActionScript目次 索引