ブラウザでダウンロード ソースの位置整理さらにメンテナンス性を上げる為に、1つのディレクトリ内に全てのソースを カタログせずに、ディレクトリに分けて保存します
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initData();" xmlns="control.*" > <!-- *************************************************** --> <!-- 外部ソース --> <!-- *************************************************** --> <mx:Style source="extern/Style.css" /> <mx:Script source="extern/Script.as" /> <!-- *************************************************** --> <!-- HTTP 通信用 --> <!-- *************************************************** --> <mx:HTTPService id="srv" showBusyCursor="true" result="resultHandler(event)" fault="faultHandler(event)" /> ・ ・ ・ ・ Script.as から include される Parts.as は、 Script.as から見たパスで指定します Script.as
import mx.controls.*; import mx.events.*; import mx.rpc.events.*; import mx.formatters.*; import flash.external.*; import flash.events.*; include "Parts.as" ・ ・ ・ ・ XML( e4x ) によるデータの取得とバインド利用新しく策定された ECMAScript for XML 仕様には、XML データを処理するための 新しいクラス群や機能が定義されています。 それらは総称して E4X と呼ばれています。 ActionScript 3.0 は、E4X 準拠のクラスとして、 新しい XML、XMLList、QName、および Namespace クラスを備えています。 結論から言うと、e4x をレスポンス形式として使う事によって最大限の 有用な機能を利用できるという事で、それ以外の形式は特別な用途で 使用されると考えられます。 ここでは、[Bindable] というバインド可能な変数を定義する事によって、 この変数が変更されると、バインド先のデータが変更されるというイベント 処理を簡単な記述で実現できます。 ※ XML( e4x ) 記述の注意事項 1) 属性の前に @ を付加する 2) @属性 が直接属性の値を参照 3) 末端の要素が、その内部のテキストノードの値を参照 Script.as
import mx.controls.*; import mx.events.*; import mx.rpc.events.*; import mx.formatters.*; import flash.external.*; import flash.events.*; include "Parts.as" [Bindable] public var idx:int = 0; [Bindable] public var xdata:XML; // ***************************************************** // HTTPServiceを使用してHTTPリクエスト(GET)を行う // ***************************************************** private function sendData():void { // ● リクエストするURLをセット // ★ http:// で記述すると、ベースが ローカルでも動作します srv.url = "php/response.php"; srv.request.fld1 = fld1.text; srv.request.fld2 = fld2.text; srv.request.fld3 = fld3.text; // レスポンス結果のデータフォーマット srv.resultFormat = "e4x"; srv.method = "GET"; srv.send(); } // ***************************************************** // HTTPServiceが成功 // ***************************************************** private function resultHandler(e:ResultEvent):void { xdata = XML(e.result); firebug( xdata.row.(@id=="0001").COL_3 ); firebug( xdata.row[1].COL_3 ); } // ***************************************************** // HTTPServiceでエラーが発生した // ***************************************************** private function faultHandler(e:FaultEvent):void { Alert.show(e.fault.message); } Main.mxml
<!-- *************************************************** --> <!-- 入力フォーム --> <!-- *************************************************** --> <mx:Form width="90%" height="90%"> <mx:FormHeading height="40" label="社員データ登録"/> <mx:FormItem label="社員コード" labelStyleName="labelAlign" paddingBottom="30" > <LboxText id="fld1" maxChars="4" width="50" text="{xdata.row[idx].@id}" /> </mx:FormItem> <mx:FormItem label="氏名" labelStyleName="labelAlign" paddingBottom="30" > <LboxText id="fld2" width="300" text="{xdata.row[idx].COL_1}" /> </mx:FormItem> <mx:FormItem label="フリガナ" labelStyleName="labelAlign" paddingBottom="30" > <LboxText id="fld3" width="300" text="{xdata.row[idx].COL_2}" /> </mx:FormItem> <mx:FormItem label="" labelStyleName="labelAlign" paddingBottom="30" > <mx:HBox> <mx:Button id="btn" label="読み込み" click="idx=0;sendData()" styleName="sendButton" /> <mx:Button label="本人" click="idx=0" width="100" styleName="changeButton" /> <mx:Button label="管理者" click="idx=1" width="100" styleName="changeButton" /> </mx:HBox> </mx:FormItem> </mx:Form> response.php
<? header( "Content-Type: text/xml; Charset=utf-8" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); mb_language( "ja" ); mb_internal_encoding("UTF-8"); // 入力データ( UTF-8 ) // $_GET['fld1'] => 社員コード // $_GET['fld2'] => 氏名 // $_GET['fld3'] => フリガナ print "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; ?> <data> <row id="0001"> <COL_1 type="氏名">山田 太郎</COL_1> <COL_2 type="フリガナ">ヤマダ タロウ</COL_2> <COL_3 type="番号">1234567890</COL_3> </row> <row id="0002"> <COL_1 type="氏名">鈴木 花子</COL_1> <COL_2 type="フリガナ">スズキ ハナコ</COL_2> <COL_3 type="番号">9981</COL_3> </row> </data> 以下は、response.php を MySQL のデータベースからの取得対応したものです <? header( "Content-Type: text/xml; Charset=utf-8" ); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); mb_language( "ja" ); mb_internal_encoding("UTF-8"); // 入力データ( UTF-8 ) // $_GET['fld1'] => 社員コード // $_GET['fld2'] => 氏名 // $_GET['fld3'] => フリガナ $link = mysql_connect('localhost', 'root', ''); mysql_select_db( 'lightbox', $link ); $query = "select * from 社員マスタ where 社員コード = '{$_GET['fld1']}'"; $query = mb_convert_encoding( $query, "SHIFT_JIS", "UTF-8" ); $result = mysql_query($query, $link); $row = mysql_fetch_array($result); $row[1] = mb_convert_encoding( $row[1], "UTF-8", "SHIFT_JIS" ); $row[2] = mb_convert_encoding( $row[2], "UTF-8", "SHIFT_JIS" ); $query = "select * from 社員マスタ where 社員コード = '{$row[9]}'"; $query = mb_convert_encoding( $query, "SHIFT_JIS", "UTF-8" ); $result = mysql_query($query, $link); $row2 = mysql_fetch_array($result); $row2[1] = mb_convert_encoding( $row2[1], "UTF-8", "SHIFT_JIS" ); $row2[2] = mb_convert_encoding( $row2[2], "UTF-8", "SHIFT_JIS" ); mysql_close($link); print "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; ?> <data> <row id="<?= $row[0] ?>"> <COL_1 type="氏名"><?= $row[1] ?></COL_1> <COL_2 type="フリガナ"><?= $row[2] ?></COL_2> <COL_3 type="">1234567890</COL_3> </row> <row id="<?= $row2[0] ?>"> <COL_1 type="氏名"><?= $row2[1] ?></COL_1> <COL_2 type="フリガナ"><?= $row2[2] ?></COL_2> <COL_3 type="番号">9981</COL_3> </row> </data> |