URLRequestを使ったクイズを作ってみた。

January 18, 2009,
tags: php 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形式で吐き出してって感じにして。

今度やってみます。

comments powered by Disqus