↑ホーム(よかひよかとき) へ
     こんがらがって困るので、使用頻度大のものをコピー&ペーストで使えるよう 「覚え書」 としたものです。 参考になれば喜。 動作確認は自責で。
JavaScriptの覚え書 ActionScript2の覚え書 ActionScript3の覚え書 Javaアプレットの覚え書
Perlの覚え書 MTASCによるSWF作成の覚え書 Flex3によるSWF作成の覚え書 FLASH および Javaアプレット作品(おもちゃ箱)

[ このページへのリンクはフリーです ]

よかひよかときの (((((((((((( MTASCによるSWF作成 の覚え書 ))))))))))))    .

 プログラム言語 ActionScript2 で作成したソースファイルを ActionScript2.0コンパイラー (Motion-Twin ActionScript 2 Compiler、略して MTASC
でコンパイルすることにより、swf ファイルを作成することができます。 私のやり方の覚え書です。

(※ MTASC のインストールのやり方は略。既にいろいろ紹介されていますので検索して準備してください。)

● ソースコードの作成とコンパイル
//================================================
// Sample.as というファイル名で、ソースコードを作成する場合
//================================================
class Sample
{
    static function main()
    {
        var sample:Sample=new Sample(_root);
    }

    function Sample()
    {
        (ここに、ActionScript2 でコードを記述する)
    }
}


○ MTASCでのコンパイルは、次のようにする。
mtasc -version 8 -swf Sample.swf -main Sample.as -header 900:600:30


● 実際には
○ 下のピンク内で、自分のやりたい部分を適宜コピーし貼り付けて使用できる。
 改変自由。
○ すべてのサンプルを一度に試すには、下のピンク部分をすべてそのままコピーし
 貼り付けて、 Sample.as  というファイル名で保存し、MTASCでコンパイルする。
○ MTASCでのコンパイルは、次のようにする。
mtasc -version 8 -swf Sample.swf -main Sample.as -header 900:600:30

 成功すれば、Sample.swf が作られる。 それを実行すれば右図
(実際はこの2倍サイズ)ができるはずである。
 「自分用の覚え書」ですので、ご自分の環境に合わせてご使用ください。
 (改変は自由です。 参考になれば喜。 動作確認は自責で。)


● 実際の作品例
     簡単例  超簡単お絵かき   コッホ曲線
     3D例   立方体(美しいです)   飛行機
     他例   オルゴール   ピアノ


// Sample.as というファイル名で、ソースコードを作成する
//(エンコードの種類を Unicode(UTF-8) として作成すれば日本語文字も可)
//==============================================================================
class Sample
{
	var depth=0;	// 深度
	var x=0;	// 表示位置(x座標)
	var y=0;	// 表示位置(y座標)
	var w=0;	// 表示サイズ(幅)
	var h=0;	// 表示サイズ(高さ)

	static function main()
	{
		var sample:Sample=new Sample(_root);
	}

	function Sample()
	{
		// ■テキストフィールド-------------------------------------------------
		depth=1;	// 深度
		x=10;		// 表示位置(x座標)
		y=10;		// 表示位置(y座標)
		w=200;		// 表示サイズ(幅)
		h=25;		// 表示サイズ(高さ)
		var textName0=_root.createTextField("textName0", depth, x, y, w, h);
		textName0.text="Hello World";

		// オプションとして
		textName0.border=true;			// 枠の有無(true:有 false:無)
		textName0.borderColor="0xff0000";	// 枠の色
		textName0.background=true;		// 背景色の有無(true:有 false:無)
		textName0.backgroundColor="0x00ff00";	// 背景色

		// フォントを指定するには
		var tf=new TextFormat("Times Roman", 16, 0x0000ff, true, true, true); //(フォント,サイズ,色,太字,斜体,下線)
		tf.align="center"; // 表示位置の指定
		textName0.text="HELLOW WORLD";
		textName0.setTextFormat(tf); //(注:このセットの前にテキストを書かないと書式が反映されない)


		// あるいは、次のように個別に指定することもできる
		depth=2;	// 深度
		var textName1=_root.createTextField("textName1", depth, 10, 140, 100, 80);
		textName1.text="テキストフィールド内で複数行に表示されています";
		textName1._x=10;			// 表示位置(x座標)
		textName1._y=140;			// 表示位置(y座標)
		textName1._width=100;			// 表示サイズ(幅)
		textName1._height=80;			// 表示サイズ(幅)
		textName1.textColor=0xff0000;		// テキストの色
		textName1.multiline=true;		// 複数行表示
		textName1.wordWrap=true;		// 行の末尾に収まらない単語のとき、単語を丸ごと次の行に送る

		var tf1=new TextFormat();		// フォントサイズの指定
		tf1.size=14;
		textName1.setTextFormat(tf1);


		// 作成したテキストフィールドを削除するには、  textName0.removeTextField();  とすればよい。


		// ■図形(直線、曲線、多角形、円)を描く-------------------------------
		// 2点 A(x1, y1)、 B(x2, y2) を結ぶ直線を描く
		depth=3;	// 深度
		var figName0=_root.createEmptyMovieClip("figName0", depth);
		figName0.lineStyle(1, 0xff0000, 100);		//(線の太さ, 線色, 透明度)
		figName0.moveTo(20, 50);			// A点の座標(x1, y1)
		figName0.lineTo(120, 80);			// B点の座標(x2, y2)
		figName0.endFill();

		// 2点 A(x1, y1)、C(x3, y3) を結び、途中、点B(x2, y2) に近づいた曲線を描く
		depth=4;	// 深度
		var figName1=_root.createEmptyMovieClip("figName1", depth);
		figName1.lineStyle(1, 0x00ff00, 100);		//(線の太さ, 線色, 透明度)
		figName1.moveTo(140, 50);			// A点の座標(x1, y1)
		figName1.curveTo(200, 110, 250, 80);		// B点、C点の座標 (x2, y2, x3, y3)
		figName1.endFill();

		// 3点 A(x1, y1)、 B(x2, y2)、 C(x3, y3) を結ぶ多角形を描く
		depth=5;	// 深度
		var figName2=_root.createEmptyMovieClip("figName2", depth);
		figName2.lineStyle(1, 0x0044ff, 100);		//(線の太さ, 線色, 透明度)
		figName2.moveTo(270, 30);			// A点の座標
		figName2.lineTo(400, 110);			// B点の座標
		figName2.lineTo(250, 120);			// C点の座標
		figName2.lineTo(270, 30);			// A点の座標
		figName2.endFill();

		// 3点 A(x1, y1)、 B(x2, y2)、 C(x3, y3) を結ぶ多角形を描く (内部を塗りつぶす)
		depth=6;	// 深度
		var figName3=_root.createEmptyMovieClip("figName3", depth);
		figName3.lineStyle(1, 0x0044ff, 100);		//(線の太さ, 線色, 透明度)
		figName3.beginFill(0xff00ff, 100);		//(塗りつぶす色, 透明度)
		figName3.moveTo(430, 30);			// A点の座標
		figName3.lineTo(560, 110);			// B点の座標
		figName3.lineTo(410, 120);			// C点の座標
		figName3.lineTo(430, 30);			// A点の座標
		figName3.endFill();

		// 円を描く(N角形で、Nの数を大きくすればよい)
		depth=7;		// 深度
		var N=48;		// N角形(Nの値を大きくすれば滑らかな円になる)
		var cx=640;		// 中心のx座標径
		var cy=80;		// 中心のy座標径
		var r=50;		// 半径
		var xx=new Array();
		var yy=new Array();
		for(var i=0; i< N; i++)
		{
			xx[i]=cx+r*Math.cos(Math.PI/180*360/N*i);
			yy[i]=cy+r*Math.sin(Math.PI/180*360/N*i);
		}
		var figName4=_root.createEmptyMovieClip("figName4", depth);
		figName4.lineStyle(1, 0x0000ff, 100);	//(線の太さ, 線色, 透明度)
		figName4.moveTo(xx[0], yy[0]);
		for(var i=1; i< N; i++)
		{
			figName4.lineTo(xx[i], yy[i]);
		}
		figName4.lineTo(xx[0], yy[0]);
		figName4.endFill();


		// 描いた絵を消すには、	figName4.clear();  とすれば、描いた円が消える。

		// 作成したムービークリップを削除するには、  _root.figName4.removeMovieClip();  とすればよい。


		// ■イメージ(図、写真)を外部ファイルから読み込んで配置する(sample.jpg を読み込んで配置する。)---
		// (sample.jpg を自分で用意しておくこと)
		depth=10;		// 深度
		var image0=_root.createEmptyMovieClip("image0", depth);
		image0.loadMovie("sample.jpg");
		image0._x=150;	// 配置する image0 の左上のx座標
		image0._y=150;	// 配置する image0 の左上のy座標

		// オプションとして
		image0._xscale=20;		// 横倍率(%)
		image0._yscale=20;		// 縦倍率(%)
		image0._rotation=30;	// 回転角(度)
		image0._alpha=100;		// 透明度(0〜100、0:完全透明になり表示されない)


		// ■サウンドを外部ファイルから読み込んで鳴らす(sample.mp3 を読み込んで鳴らす。)----------
		// (sample.mp3 を自分で用意しておくこと)
		_root.sound0=new Sound(_root);
		_root.sound0.onLoad=function(success)
		{
			if(success)				// ロード結果の判定
			{
				_root.sound0.start();		// サウンド再生
				_root.sound0.setVolume(100);	// 音量(デフォルトは 100)
			}
		}
		_root.sound0.loadSound("sample.mp3", false);	// サウンドファイルのロード


		// ■ マウスに反応させる(お絵かきソフトを作ってみよう)---------------------------------
		depth=11;
		var mouse_b:Boolean;
		var figName8=_root.createEmptyMovieClip("figName8", depth);
		figName8.lineStyle(5, 0xFF0000, 100);

		_root.onMouseDown=function() // マウスボタンを押した時の動作
		{
			mouse_b=true;
			figName8.moveTo(_root._xmouse, _root._ymouse);
		}

		_root.onMouseUp=function() // マウスボタンを離した時の動作
		{
			mouse_b = false;
		}

		_root.onMouseMove=function() // マウスボタンを動かした時の動作
		{
			if(!mouse_b){return;}
			figName8.lineTo(_root._xmouse, _root._ymouse);
		}

		// ■ キーに反応させる(入力した文字を表示させてみよう)-------------------------------
		depth=12;
		var textName2=_root.createTextField("textName2", depth, 100, 420, 50, 25);
		_root.key1=new Object();
		_root.key1.onKeyDown=function()
		{
			var Ip=String.fromCharCode(Key.getAscii());
			textName2.text=Ip;
		}
		Key.addListener(_root.key1); // key1 をイベントリスナーに登録する


		// ■ボタンの作成---------------------------------------------------
		var flagBtn:Boolean;
		depth=13;
		var btn=_root.createEmptyMovieClip("btn", depth); // ボタン
		var tf2=new TextFormat("", 14, 0x000000, false, false, false);
		tf2.align="center";
		depth=14;	// 深度
		x=550;		// 表示位置(x座標)
		y=150;		// 表示位置(y座標)
		w=40;		// 表示サイズ(幅)
		h=25;		// 表示サイズ(高さ)
		btn.createTextField("textName3", depth, x, y, w, h);
		btn.textName3.text="Push!";
		btn.textName3.setTextFormat(tf2);
		btn.textName3.border=true;			// 枠の有無(true:有 false:無)
		btn.textName3.borderColor="0x0000ff";		// 枠の色
		btn.textName3.background=true;			// 背景色の有無(true:有 false:無)
		btn.textName3.backgroundColor="0xffff00";	// 背景色
		btn.onPress=function()
		{
			// (ここに、このボタンの押したとき実行することを書く。以下は、一例である。)=====
			var depth=15;
			var textName4=_root.createTextField("textName4", depth, 450, 150, 100, 25);
			if(!flagBtn)
			{
				textName4.text="Hello!";
				textName4.setTextFormat(tf2);
				flagBtn=true;
			}
			else
			{
				textName4.text="World!";
				textName4.setTextFormat(tf2);
				flagBtn=false;
			}
			//==============================================================================
			return;
		}


		// ■現在の年月日を取得する-----------------------------------------------
		var today=new Date();
		var year=today.getFullYear();	// 年の取得
		var month=today.getMonth()+1;	// 月の取得
		var day=today.getDate();		// 日の取得
		var wday=today.getDay();		// 曜日の取得
		var weeks=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
		var week=weeks[wday];
		depth=18;	// 深度
		x=500;
		y=190;
		w=300;
		h=40;
		var textName7=_root.createTextField("textName7", depth, x, y, w, h);
		var tf3=new TextFormat("Times Roman", 24, 0xaa00aa, false, false, false);
		textName7.text=month+"/"+day+"/"+year+"/"+week;
		textName7.setTextFormat(tf3);


		// ■現在の時刻を取得する-----------------------------------------------
		var today2=new Date();
		var hour=today2.getHours();		// 時間の取得
		var min=today2.getMinutes();		// 分の取得
		var sec=today2.getSeconds();		// 秒の取得
		depth=20;	// 深度
		x=500;		// 表示位置(x座標)
		y=220;		// 表示位置(y座標)
		w=300;		// 表示サイズ(幅)
		h=40;		// 表示サイズ(高さ)
		var textName8=_root.createTextField("textName8", depth, x, y, w, h);
		var tf4=new TextFormat("Times Roman", 24, 0x0000aa, false, false, false);
		textName8.text=hour+" : "+min+" : "+sec;
		textName8.setTextFormat(tf4);


		// ■外部ファイルからデータを読み込む--------------------------------------
		var depth2=22;	// 深度
		var tex=new Array();
		System.useCodepage=true;	// 日本語も扱えるようにする
		var dataF=new LoadVars();
		dataF.onLoad=function(success)
		{
			if(success)	// ロード結果の判定
			{
				tex[0]=dataF.data0;				// data.datファイルの data0 の内容を tex[0] とする。
				tex[1]=dataF.data1;				// data.datファイルの data1 の内容を tex[1] とする。
				tex[2]=dataF.data2;				// data.datファイルの data2 の内容を tex[2] とする。
				tex[3]=parseFloat(dataF.data3);	// data.datファイルの data3 の内容(文字)を数値に変換し tex[3] とする。
				var textName5=_root.createTextField("textName5", depth2, 20, 320, 300, 25);
				textName5.text=tex[0]+", "+tex[1]+", "+tex[2]+", "+tex[3];
			}
		}
		dataF.load("data.dat");	// ファイルのロード


		// ■一定時間待って動作させる(文字を移動させてみよう)---------------------------------
		var depth3=23; // 深度
		var time=0;
		var waiting=setInterval(function()
		{
			//(ここに一定時間後に実行することを記述する。以下は一例である。)=====
			var textName9=_root.createTextField("textName9", depth3, time, 300, 400, 20);
			textName9.text=tex[0]+", "+tex[1]+", "+tex[2]+", "+tex[3];
			time++;
			if(time>100){time=0;}
			//=====================================================================
			clearInterval(_root.waiting);
		}, 30)	// この数値の単位は、ミリ秒(1/1000秒)。 この値で待ち時間を指定する。


		// ■自分で関数を定義し使用する--------------------------------------------
		myFun();
	}

	function myFun() // 自分で関数を定義する
	{
		depth=30;	// 深度
		x=100;		// 表示位置(x座標)
		y=250;		// 表示位置(y座標)
		w=400;		// 表示サイズ(幅)
		h=40;		// 表示サイズ(高さ)
		var textName20=_root.createTextField("textName20", depth, x, y, w, h);
		var tf5=new TextFormat("Times Roman", 32, 0xff0000, true, false, false);
		textName20.text="Hello World.  Thank You.";
		textName20.setTextFormat(tf5);
		return;
	}
}

このページのトップへ

**********************************************************************************
Copyright(C) 2007-@YokahiYokatoki