2011年1月28日金曜日

[MA-11-12] 外部SWFファイルの読み込み(複数背景切替)


background(swf)提出先


Flashからのパスの指定方法
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_1.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_2.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_3.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_4.swf
http://www14026u.sakura.ne.jp/ma/11/background/k0*****_5.swf

character(swf)提出先

Flashからのパスの指定方法
http://www14026u.sakura.ne.jp/ma/11/character/k0*****.swf

base(swf)提出先

Flashからのパスの指定方法
http://www14026u.sakura.ne.jp/ma/11/base/k0*****.swf

最終成果物(fla)提出先


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)

2011年1月21日金曜日

[MA-11-10] 外部SWFファイルの読み込み(背景)

ユーザーのログインにあわせて,サーバ上に配置してある背景(及びキャラクタの移動範囲を示すオブジェクト)が記述されたSWFファイルを読み込む.



20110121_11-10.swf

[MA-11-9] ログイン画面の実装

従来ソースコード内に含めていたユーザー名,及びパスワードを,ユーザーが入力した任意の文字列が使えるように改修する.



20110121_11-9.swf

※上下左右キーでキャラクター移動.スペースキーで情報表示ウィンドウのオン/オフが可能です.

2011年1月20日木曜日

[SA-6-1] Uploader

APIの動作確認と作成したWEBサービスの提出は,こちらのアップローダーを利用してください.


※他ユーザーの作品と混ざらないように,必ずファイル名の先頭に自身の名前を付けてください.

[SA-6] 外部APIの利用

各種WEBサービスを外部から利用する為のAPI.
(マッシュアップとかWEB2.0とか呼ばれていたアレ)
これらを用いることで,自前でデータや機能を用意することなく,迅速かつ用意にサービスを開始する事が可能となる.
(ただし,あくまでも他社のサービスを流用している事から,サービスの継続性については,疑問が残る)

代表的な外部API
SITEURL
googlehttp://code.google.com/intl/ja/apis/
flickrhttp://www.flickr.com/services/api/
Yahoo!http://developer.yahoo.co.jp/
Amazonhttp://www.amazon.co.jp/gp/feature.html?ie=UTF8&docId=451209
Facebookhttp://developers.facebook.com/
twitterhttp://apiwiki.twitter.com/w/page/22554648/FrontPage

2011年1月19日水曜日

[MA-11-8] DBから値を取得3

取得したXMLに含まれるitemの値を用いてサーバ上のPNGファイルを取得し,ステージ上に配置したムービークリップにロードする.



20110121_11-8.swf

1.windowレイヤー上にムービークリップ(W90xH18の矩形)を配置(インスタンス名:item_mc)
2.取得したXMLに含まれるitemの値を用いて取得するファイル名を組み立てる
3.ファイルを取得し,ステージ上のムービークリップにロード

読み込まれるPNGファイル一覧

1star.png

2star.png

3star.png

4star.png

5star.png

サンプル
var user_name = "ユーザー名";
var user_pass = "パスワード";
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) {
  money = status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue
  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");
  }
}

[MA-11-7] DBから値を取得2

ユーザー名・パスワードを用いてサーバー上のXMLを取得し,その中に含まれるmoney,kanaの値をステージ上に表示する.

サンプル
//user = _root.user;
//money = _root.money;
var user_name = "ユーザー名";
var user_pass = "パスワード";
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) {
  money = status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue
  user = status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue;

  //取得するXMLファイルのイメージ
  //<ma>
  // <user_status>
  //  <money>100</money>
  //  <item>1</item>
  //  <kana>なまえ</kana>
  // </user_status>
  //</ma>
  trace (status_xml.nodeValue);
  trace (status_xml.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.nextSibling.firstChild.nodeValue);
  trace (status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue);
  }
}

2011年1月14日金曜日

[MA-11-6] DBから値を取得

FlashからDBに直接接続するのではなく,仲介役となるPHPファイルに接続し,DBに問い合わせた結果をXML形式で受け取る.

1.ブラウザを用いて以下の取得先URLにアクセスし,自身のユーザー名/パスワードを用いて値が取得できるか確認.
(取得されるデータはXML形式のため,ページのソースを表示で内容確認)
取得先URL
http://www14026u.sakura.ne.jp/ma/11/status.php?user_name="ユーザー名"&user_pass="パスワード"

2.自身のユーザー名/パスワードを用いて固有の値(ユーザー毎のmoneyとitemの値)を取得できることが確認できたら,現在作成しているFlaファイルに1で取得出来るmoneyの値が反映されるように修正.

3.itemの値は現状0 or 1を想定しているため,0の時はオブジェクトの表示をOFF,1の時はオブジェクトの表示をONとなるようにする.


(参考)DBに接続し,ユーザーのstatusを返すPHP
<?php
 $db_user  = "ユーザー名";
 $db_password = "パスワード";
 $db_name = "DB名";
 $db_host  = "接続先サーバ名";

//create xml
    header('Content-type: text/xml; charset=utf-8');
    echo '<?xml version="1.0"?><ma>';

 $user_name = null;
 $user_pass = null;

 if(isset($_GET['user_name'])) {
  $user_name = $_GET['user_name'];
  $user_pass = $_GET['user_pass'];

  $con = mysql_connect($db_host,$db_user,$db_password) or die("error!");
  mysql_select_db($db_name,$con) or die("DB is not exist");
  $strsql = "SET CHARACTER SET UTF8";
  mysql_query($strsql,$con);
  $strsql = "SELECT money, item FROM users WHERE name = $user_name AND pass = $user_pass;";
  $res = mysql_query($strsql,$con);

  while ($item = mysql_fetch_array($res)) {
   print "<user_status><money>".$item[0]."</money><item>".$item[1]."</item></user_status>";
  }
  mysql_close($con);
}

    echo '</ma>'; 
?>