feb19.jp blog - life is creative!

外部クラスを作る(ActionScript2.0)

ブックマークに追加する tags:    

外部クラスを作る(ActionScript2.0)

ActionScript2.0では外部asファイルとしてクラスを作成する事ができます。クラスを作成すると、スコープやらなにやらそのクラス内で処理を行う事ができるので、なれると非常に便利だったりします。また、お気に入りのテキストエディタで作業ができるというのもポイントが高いです。Flashのアクションスクリプトエディタはやっぱりなんだかんだいって使いづらいです。


さらに、Flashファイル内のフレームアクションやボタンアクション、ムービークリップアクションを多用していると、いろんな所にActionScriptが書かれる訳ですから、更新の必要が出てきた時なんかになかなか対応が難しいなんて自体に陥る場合もあります。その点、外部クラスとして全ての処理を保持しておくと見やすいですし、更新もさくさく(いくかどうかはスキル次第ですが)。

というわけでまず外部クラスを使って、_rootに表示されているムービークリップ「b_mc」をクリックすると「クリック!」と表示されるクラスを作ってみましょう。

class SampleClick {
	var base:MovieClip;
	function SampleClick(mc:MovieClip){
		basemc = mc;
		setBtn();
	}
	function setBtn():Void{
		basemc.b_mc.onRelesae = function(){
			trace("クリック!");
		}
	}
}

以上のコードをテキストエディタにコピペして、対象の.fla(_root上にインスタンス名「b_mc」ムービークリップが配置されている.fla)と同じディレクトリにSampleClick.asとして保存してください。

var sample = new SampleClick(this);

そしてFlash側の_rootのフレームアクションに上の一行のコードを書いてください。これで_rootをスコープとした外部クラス「SampleClick」が呼び出され、実行されます。出力パネルに「クリック!」と表示されたら成功です。

このサンプルの肝は、_root.b_mc.onReleaseとせず、basemc.b_mc.onReleaseとしているところ。わざわざ_rootをthisと指定し、それを変数に入れているのはなぜかという所になります。

理由は、もしこのファイルがloadMovieなんかで別のSWFからロードされる時、_rootを使っていたらこのSWFを読み出す親側のSWFの_rootをさす事になってしまいます。もちろんロックルートなんかで_rootのスコープ固定する事ができますが、それはそれでややこしくなってしまうので(あえて親側の_rootにアクセスしたい時とか)、_rootを生かしつつ直感的に作る方法として以上のような方法を取るのです。

ところでこの方法だとonReleaseの関数からクラス内の別の関数を呼び出す事が出来ません。なぜかと言うと、別の関数例えば「helloWorld()」を作ったとして、onRelease文の中にhelloWorld()を実行しようとしても、onReleaseの中ではonReleaseの中でしか実行出来ないのでhelloWorldを実行できません。同様にbasemcもonReleaseの中では利用できません。

というわけで以下のようにします。

class SampleClick2 {
	var basemc;
	function SampleClick2(mc:MovieClip){
		basemc = mc;
		setBtn();
	}
	function setBtn():Void{
		var scope = this;
		basemc.b_mc.onRelease = function(){
			scope.helloWorld();
		}
	}
	function helloWorld():Void{
		trace("HELLO WORLD");
	}
}

こんどは「SampleClick2.as」として保存し、フレームアクションは以下のようにします。

var sample = new SampleClick2(this);

onReleaseの関数内からクラス内の別の関数を呼び出すには「ローカル変数」でクラスのスコープを先に宣言しておいてそのローカル変数を利用してクラス内の別の関数を呼び出します。onReleaseならローカル変数なら利用可能です。

ちなみにActionScript3.0ではどうなるかは次のエントリーで。

2007年08月28日11:35

Webデザインブログ

「外部クラスを作る(ActionScript2.0)」の関連エントリー

 iTunes Store(Japan)

コメントを投稿

トラックバック

このエントリーのトラックバックURL:
http://feb19.jp/mt/mt-tb.cgi/92

この一覧は、次のエントリーを参照しています: 外部クラスを作る(ActionScript2.0):

» 外部クラスを作る(ActionScript3.0) 送信元 feb19.jp blog
前回のエントリー「外部クラスを作る(ActionScript2.0)... [詳しくはこちら]

Navigation

古:Nikon D80試し撮り大会@高幡不動
新:外部クラスを作る(ActionScript3.0)
トップページ

Recently Entries
Mac でファイルの関連付けを変える(Mac で AIR アプリがアップデート出来ないを解決する方法)
ファイルを右クリックして「情報を見る」を選び、表示されたウィンドウの...
Mac OS X 10.6 Snow Leopard から入ってるフォント「Menlo」がコーディング作業にいい感じ
Xcode でコード書いているとき、Eclipse でコード書くより...
AIR で JSON 形式ファイルの入出力
AIR 祭り開催中。今回はファイル入出力。AS3 で扱っている Ob...
Adobe CS5 ティザーサイトオープン
カウントダウンが始まっています。いよいよ CS5 ですね。globa...
AIR でファイルがドラッグアンドドロップされたことを NativeDragEvent で検知する
最近また AIR が楽しい気がして触っているのですが、 Google...
iPhone アプリ "iBeat - BPM Counter" を発売しました & iPhone インタラクションデザインについて
BPM 計測アプリです。既に似たようなアプリはいくつか発売されている...
AS3 の演算子 ||= について
AS3 だけでつかえるものではないのですが、AS3 での動作を確認し...
iPhone SDK 「カテゴリ」について+NSString の空白文字を除去する
Objective-C では、高位のフレームワークで、低位のフレーム...
Flash CS4 で Flex SDK (mx パッケージ、クラス) を使う
Flex 用のライブラリとかを見ると mx パッケージとか使われてい...
Flash CS5 を予習 ~Text Layout Framework (TLF) 編~
Text Layout Framework (TLF) を使って、F...