まずは基本のソース。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