ActionScript 3勉強中 バナー作成 その1

とりあえずバナーを作ろうと思った。作業環境はFlash CS3。
仕様(あるいはやったこと

ActionScript以外の機能は極力使わない。

BannerStructure.as にこんな感じで空のClassを用意

package {
	public class BannerStructure {
		public function BannerStructure() { //コンストラクタ関数と言うらしい。
			trace("ここに処理を書く")
		}
	}
}

1フレーム目に↓な感じで作成したクラスを呼び出した。

var myBanner1:BannerStructure = new BannerStructure();

画像を表示する

とりあえずTextFieldを表示する。前にHelloWorldやってるから簡単。
と、思いきやstageが参照できなくてすげーはまった。なんか気持ち悪いけどBannerStructureにstageを渡してやる事に。。もしMCの中に表示するならちょっと修正が必要。

package {
	import flash.display.Stage; //stageを扱うからStageクラスが必要
	import flash.text.TextField;//TextField扱うから以下略

	public class BannerStructure {
		public function BannerStructure(stage:Stage) { //stageを受け取る。
			var myLinkText:TextField = new TextField();
			myLinkText.text = "ここをクリック!";
			stage.addChild(myLinkText);
		}
	}
}

1フレーム目をちょっと修正。なんか納得いかない。。

var myBanner1:BannerStructure = new BannerStructure(stage);

クリックで http://d.hatena.ne.jp/neotag/ が開く。

myLinkTextにクリックイベントでlinkClickって関数が走るようにした。
たぶん function linkClick〜 のあたりは書き方をもうちょっと考えるべき。

package {
	import flash.display.Stage;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.net.URLRequest;
	import flash.net.navigateToURL;

	public class BannerStructure {
		public function BannerStructure(stage:Stage) {
			var myLinkText:TextField = new TextField();
			myLinkText.text = "ここをクリック!";
			myLinkText.addEventListener(MouseEvent.CLICK, linkClick);
			function linkClick(event:MouseEvent):void{
				var myUrl:URLRequest = new URLRequest("http://d.hatena.ne.jp/neotag/");
				navigateToURL(myUrl);
			};
			stage.addChild(myLinkText);
		}
	}
}

ところどころ納得いかないけどとりあえず把握。Flexだとstageそのまま触れるのになー。うーん。

おまけ

Wonderflで同じのを作ってみた。Stageの問題がないのでもうちょいシンプル。
http://wonderfl.kayac.com/code/72126a5d596acf8c75978c387e9de59d798fa374