アットウィキロゴ
まずは基本のソース。amxmlc AirTest.asでコンパイル。



package{
import flash.display.*;
import flash.text.*;
import flash.events.*;
import flash.net.*;

[SWF(width="800", height="600", framelate="30")]

public class AirTest extends Sprite {

	// loading objects
	private var xmlLoader:URLLoader;
	private var imageLoader:Loader;

	// visual components
	private var mainWindow:Sprite;
	private var subWindow:Array;
	private var scenario:XML;
	public var currentSceneName:String = "startup";
	private var currentScene:XMLList;

	public function AirTest(){
		imageLoader = new Loader();
		imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeImageData);
		imageLoader.load(new URLRequest("bg.jpeg"));

		// create mainwindow
		mainWindow = createWindow(780, 280);
		mainWindow.x = 10;
		mainWindow.y = 300;
		getText(mainWindow).width = 780;
		getText(mainWindow).wordWrap = true;

		mainWindow.addEventListener(MouseEvent.CLICK, onMouseEvent)
		addChild(mainWindow);
		

		xmlLoader = new URLLoader();
		xmlLoader.addEventListener(Event.COMPLETE, completeData);
		xmlLoader.load(new URLRequest("AirTest.xml"));

		addEventListener(Event.ENTER_FRAME, tick); 

		// create subwindows
		subWindow = new Array;
		for(var i:int = 0; i < 9; i++){
			var window:Sprite = createWindow(400, 20);
			window.x = 200;
			window.y = 270 - (30 * i);

			addChild(window);
			subWindow.push(window);
		}
	}

	public function completeData(e:Event):void {
		scenario = new XML(xmlLoader.data);
		updateWindow();
	}

	public function completeImageData(e:Event) :void {
		var loader:Loader = Loader(e.target.loader);
		var bitmap:Bitmap = Bitmap(loader.content);
		addChildAt(bitmap, 0);
	}

	public function tick(e:Event):void {
		// mainWindow.y -= 1;
	}

	public function updateWindow() : void {
		if(scenario != null){
			currentScene = scenario.scene.(@id==currentSceneName);
			getText(mainWindow).text = currentScene.message.replace(/^\s+\n/g, "");

			// subwindow clear
			for each(var window:Sprite in subWindow){
				window.visible = false;
			}

			// list for reverse
			var itemLen:int = currentScene.select.item.length();
			for(var i:int = 0; i < itemLen; i++){
				subWindow[i].visible = true;
				getText(subWindow[i]).text = currentScene.select.item[itemLen - i - 1];
			}
		}
	}

	public function onMouseEvent(e:Event) : void {
		currentSceneName = "newgame";
		updateWindow();
	}

	// creating roundrect new window
	private function createWindow(width:int, height:int) : Sprite{
			var window:Sprite = new Sprite;

			var rrect:Shape = new Shape;
			rrect.graphics.lineStyle(1,0xFFFFFF);
			rrect.graphics.beginFill(0x000000, 0.5);
			rrect.graphics.drawRoundRect(0, 0, width, height, 10);
			rrect.graphics.endFill();
			rrect.name = "window";
			window.addChild(rrect);

			var textField:TextField = new TextField;
			textField.textColor = 0xFFFFFF;
			textField.autoSize = TextFieldAutoSize.LEFT;
			textField.name = "text";
			window.addChild(textField);

			return window;
	}

	// return textfield
	private function getText(window:Sprite) : TextField{
		return window.getChildByName("text") as TextField;
	}
}


}

<?xml version="1.0" ?>
<scenario>
 <test>こんにちは世界</test>
 <scene id="startup">
<message>
オープニングシーンです
「はじめから」または「つづきから」を
選択してください
</message>
<select>
  <item link="newgame">はじめから</item>
  <item link="continue">つづきから</item>
</select>
 </scene>
 
 <scene id="newgame">
<title>はじめから</title>
<message>
ゲーム開始です
</message>
 </scene>
 
 <scene id="continue">
<title>つづきから</title>
<message>
ゲームを続けます
</message>
 </scene>
</scenario>


以下で実行

adl AirTest-app.xml
最終更新:2009年11月13日 17:41