2009年01月18日
URLRequestを使ったクイズを作ってみた。
ActionScriptは苦手なんですが、URLRequestつかってPHPと連携できるっての知って、遊んでみました。
クイズをつくったのですが、肝心なのは問題をPHPから受け取るってところだったりします。
ここでクイズができます。
とりあえず、PHP側はこんな感じに書いています。
<?php
$qa = array(
0 => array("q" => "ポリドッグはイケメンである", "a" => 1),
1 => array("q" => "ドラえもんは実はメス犬である", "a" => 0),
);
echo "q=".$qa[$_POST['q']]["q"]."&a=".$qa[$_POST['q']]["a"];
?>
でもって、ActionScript側はこんな感じ
ファイル
//何問目かを取得
var qNum:Number = 0;
//問題数
var qLimit:Number = 2;
var Qreq:URLRequest;
var Qvars:URLVariables;
var Qloader:URLLoader;
//サーバからの返答の判定
var ResponseFlag = false;
//回答のこたえ
var answer:Number;
//問題取得用URL
var qUrl:Array = new Array();
qUrl[0] = "http://www.polidog.jp/test/test.php";
qUrl[1] = "http://www.polidog.jp/test/test.php?q=2";
qUrl[2] = "http://www.polidog.jp/test/test.php?q=3"
//返答内容
var AnswerMessage:Array = new Array();
AnswerMessage[0] = "不正解です。";
AnswerMessage[1] = "正解です。";
getQa();
yes_bt.addEventListener(MouseEvent.CLICK,answerYes);//回答「YES」
no_bt.addEventListener(MouseEvent.CLICK,answerNo);//回答「NO」
next_bt.addEventListener(MouseEvent.CLICK,nextQa);//次へ
//問題を取得する
function getQa(){
Qreq = new URLRequest(qUrl[qNum]);
Qreq.method = URLRequestMethod.POST;
Qvars = new URLVariables();
Qvars.q = qNum;
Qreq.data = Qvars;
Qloader = new URLLoader(Qreq);
Qloader.dataFormat = URLLoaderDataFormat.VARIABLES;
Qloader.load(Qreq);
Qloader.addEventListener(Event.COMPLETE, qaResponse);
}
//サーバからのレスポンスが完了してら処理する内容
function qaResponse (event:Event):void{
//↓戻り値を変数に格納
var vars:URLVariables = new URLVariables( event.target.data );
//trace( vars.comp );
qa.text = vars.q;
answer = vars.a;
ResponseFlag = true;
}
//回答処理
function answerAction(flag:Number):void{
if(ResponseFlag){
if(flag == answer){
answer_txt.text = AnswerMessage[1];
}else{
answer_txt.text = AnswerMessage[0];
}
}
}
//Yesが押されたら
function answerYes(event:MouseEvent){
answerAction(1);
}
//Noが押されたら
function answerNo(event:MouseEvent){
answerAction(0);
}
//次へボタン
function nextQa(event:MouseEvent){
answer_txt.text = "";
qNum++;
if(qNum >= qLimit ){//問題数の限界値にきたら最初の問題に戻す
qNum = 0;
}
getQa();
}
なんとなくActionScriptってつかめないなぁー。
結構ActionScriptの授業サボってたしね。。。
たぶんもっといい書き方あると思うので、だれか教えてください。
あーあとこーゆーのだったら、XMLとの連携にしたほうがいいのかも。
PHPでXML形式で吐き出してって感じにして。
今度やってみます。