20111021.swf |
HTMLファイルに値を埋め込み,URL引数渡しする方法では,他ユーザーとリアルタイムに値を共有することができない.
そこで今後は,データベース(以下DB)に全ユーザーの値を集約し,その値をSWFで利用する事とする.
今回はFlashからDBに直接接続しSQLを発行する方法ではなく,FlashからDBとの仲介役となるPHPファイルに接続し,DBに問い合わせた結果をFlashがXML形式で受け取る方法について説明する.
1.ブラウザを用いて以下の取得先URLにアクセスし,自身のユーザー名/パスワードを用いて値が取得できるか確認.
(取得されるデータはXML形式のため,ページのソースを表示で内容確認)
取得先URL
http://www14026u.sakura.ne.jp/ma/2011/9/status.php?user_name="ユーザー名"&user_pass="パスワード"
2.自身のユーザー名/パスワードを用いて固有の値(ユーザー毎のmoneyとitemの値)を取得できることが確認できたら,現在作成しているFlaファイルに1で取得出来るmoneyの値が反映されるように修正.
Flashの中でユーザー名・パスワードを用いてサーバー上のXMLを取得し,その中に含まれるmoney,kanaの値をステージ上に表示する.
ActionScript(windowレイヤー)
//status_mc.name = _root.name; //status_mc.money = _root.money; var db_username = "ユーザー名"; var db_password = "パスワード"; status_xml = new XML(); status_xml.onLoad = userStatus; status_xml.load("http://www14026u.sakura.ne.jp/ma/2011/9/status.php?user_name='"+db_username+"'&user_pass='"+db_password+"'"); status_xml.ignoreWhite = true; function userStatus(success) { if (success == true) { status_mc.money = status_xml.firstChild.firstChild.firstChild.firstChild.nodeValue; status_mc.name = status_xml.firstChild.firstChild.firstChild.nextSibling.nextSibling.firstChild.nodeValue; //debug 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); } } status_mc._visible = false; window_status = 1; var key_obj:Object = new Object(); key_obj.onKeyDown = function():Void { var code = Key.getCode(); if (code == Key.SPACE) { if (window_status == 0) { status_mc._visible = false; window_status = 1; } else if (window_status == 1) { status_mc._visible = true; window_status = 0; } } }; Key.addListener(key_obj);
(参考)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 2011_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>'; ?>
ダウンロード1