2011年1月26日水曜日

[MA-11-11] 外部SWFファイルの読み込み(背景+キャラクタ)

背景だけではなく,キャラクタも外部SWFファイル化し,任意の背景,及びキャラクタを使用できるようにする.


全体構成


base.swf

base.swf
[Layer]action
 ┃
 ┗ActionScript

[Layer]login
 ┃
 ┣[MovieClipe]loginWindow
 ┃ ┃
 ┃ ┣[テキスト入力]login_user_name
 ┃ ┃
 ┃ ┗[テキスト入力]login_user_pass
 ┃
 ┗[ボタン]loginButton

[Layer]windows
 ┃
 ┣[MovieClipe]status_mc
 ┃ ┃
 ┃ ┣[ダイナミックテキスト](変数名)user
 ┃ ┃
 ┃ ┗[ダイナミックテキスト](変数名)money
 ┃
 ┗[MovieClipe]item_mc

[Layer]character
 ┃
 ┗[MovieClipe]character_stage

[Layer]background
 ┃
 ┗[MovieClipe]background_stage


character.swf

character.swf
[Layer]character
 ┃
 ┗[MovieClipe]character_mc(ActionScriptにonClipEvent含む)


background.swf

background.swf
[Layer]mask
 ┃
 ┗[MovieClipe]hit(characterのあたり判定用)

[Layer]BG

Action Script
status_mc._visible = false;
item_mc._visible = false;
background_stage._visible = false;
character_stage._visible = false;

loginWindow.loginButton.onRelease = function() {
var user_name = loginWindow.login_user_name.text;
var user_pass = loginWindow.login_user_pass.text;
status_xml = new XML();
status_xml.onLoad = userStatus;
status_xml.load("http://www14026u.sakura.ne.jp/ma/11/status.php?user_name='"+user_name+"'&user_pass='"+user_pass+"'");
status_xml.ignoreWhite = true;
function userStatus(success) {
if (success == true) {
status_mc.money = status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue;
status_mc.user = status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue;
itemNum = status_xml.firstChild.firstChild.firstChild.nextSibling.firstChild.nodeValue;
item_mc.loadMovie("http://www14026u.sakura.ne.jp/ma/11/img/"+itemNum+"star.png");
background_stage.loadMovie("http://www14026u.sakura.ne.jp/ma/uploads/background.swf");
character_stage.loadMovie("http://www14026u.sakura.ne.jp/ma/uploads/character.swf");
loginWindow._visible = false;
status_mc._visible = true;
background_stage._visible = true;
character_stage._visible = true;
}
}
};

window_status = 0;
var key_obj:Object = new Object();
key_obj.onKeyDown = function():Void  {
var code = Key.getCode();
if (code == Key.SPACE) {
if (window_status == 0) {
item_mc._visible = false;
status_mc._visible = false;
window_status = 1;
} else if (window_status == 1) {
item_mc._visible = true;
status_mc._visible = true;
window_status = 0;
}
}
};
Key.addListener(key_obj);

ダウンロード(base.fla)
ダウンロード(character.fla)
ダウンロード(background.fla)

0 件のコメント: