●550*400のステージ
●画面上部に静止テキスト「あなたが主にお使いのFLASHのバージョンは ?」を表示
●ライブラリーにUIコンポーネントの「RadioButton」をドラッグし、これをステージにドラッグして8個水平に並べる
ステージ上のRadioButtonをクリックし、コンポーネントのプロパティーのgroupName にverGroup と記入、data に各コンポーネントそれぞれ、mx,mx2004,8,cs3,cs4,cs5,cs55,cs6、label に、mx,mx2004,CS3,CS4,CS5,CS5.5,CS6 と記入する
●その下に、送信ボタン(submit_btn)を配置
●その下に2個のダイナミックテキストフィールド(インスタンス名 tf1、tf2)
●mySQL:
サーバーに応じた設定で、コマンドラインあるいはphpMyAdminなどを使って、データベースとその中のテーブルを作成する。 このSAMPLEではテーブル名は flashversion としている。 カラム数は3で、id(INT 通し番号)、fversion(varchar バージョン名)、amount(INT 投票数)。 フィールド 1-8 のfversionには、コンポーネントのlabel名と同じものを、amount にはすべて1を入力しておく。
|
System.useCodepage = true;
import mx.transitions.Tween;
import mx.transitions.easing.*;
//表示用バージョン名の配列定義
var ver:Array = new Array("mx", "2004mx", "f8", "cs3", "cs4", "cs5", "cs55", "cs6");
//棒グラフの色
var color:Array = new Array("0x000099", "0x990033", "0x339900", "0xff0099", "0x66cccc", "0xff9900", "0x0099ff", "0x663300");
//変数の配列定義
var fversion:Array = new Array();
var myratio:Array = new Array();
var mywidth:Array = new Array();
var bar_mc:Array = new Array();
var txtBox:Array = new Array();
//棒の総幅(投票数に応じて各バージョンに振り分ける)
var total_w = 900;
//棒の初期幅(長さ)、高さ
var base_w = 100;
var base_h = 20;
//棒グラフの左上座標
var x0 = 50;
var y0 = 180;
//start時の秒数
var prevcT = 0;
submit_btn.onRelease = function() {
var currentTime = new Date(); //世界時の取得
var cT = currentTime.getTime()/1000;
if (cT-prevcT<60) {
tf1.text = "連続投票のためデータは更新されません";
drawgrapgh();
} else {
var sdData = new LoadVars(); //送信データ
var rvData = new LoadVars(); //受信データ
sdData.selectedver = verGroup.selectedData; //ラジオボタンでチェックされたデータ
rvData.onLoad = function(success) { //phpからロード
if (success) {
verData = rvData.val;
total = rvData.sokei;
fversion = verData.split("/"); //受信データを / で分離、配列データへ
for (i=0; i<8; i++) {
fversion[i] = Number(fversion[i]);
myratio[i] = Math.round(fversion[i]/total*100); //各バージョン投票数の割合
mywidth[i] = total_w*myratio[i]/100; //各棒の長さ
}
txtF1.text = rvData.msg;
txtF2.text = "総投票数は、"+total+"票です。";
drawgraph();
} else {
txtF1.text = "送受信エラー";
}
};
sdData.sendAndLoad("enquete.php",rvData,"POST"); //phpとの交信
}
prevcT = cT;
};
//グラフの描画関数
function drawgraph() {
for (i=0; i<8; i++) {
bar_mc[i] = this.createEmptyMovieClip("bar_mc"+i, i);
drawRec(bar_mc[i],i);
bar_mc[i]._x = x0;
bar_mc[i]._y = -50;
}
var n = -1;
function barDraw() {
if (n++>5) {
clearInterval(id);
}
mc = bar_mc[n];
mc._y = y0+n*(base_h+3);
txtBox[n] = createTextField("tf"+n, n+10, x0+mywidth[n]+5, mc._y, 100, 20);
tw = new Tween(bar_mc[n], "_width", None.easeOut, 0, mywidth[n], 0.3, true);
txtBox[n].text = ver[n]+" ("+fversion[n]+")";
}
id = setInterval(barDraw, 300);
}
//矩形描画の関数
function drawRec(mc, j) {
var mycolor = color[j];
mc.moveTo(0,0);
mc.beginFill(mycolor,100);
mc.lineTo(base_w,0);
mc.lineTo(base_w,base_h);
mc.lineTo(0,base_h);
mc.lineTo(0,0);
mc.endFill();
} |
<?php
date_default_timezone_set('Asia/Tokyo');
$time = date("n 月 j 日 h時 i分")."にデータが更新されました。";
//データベースの接続
$server = 'サーバー名';
$db_name = 'データベース名';
$pswd = '******';
if(!$connect=mysql_connect($server,$db_name,$pswd)) {
echo 'データベースに接続できません'; //実際はしていないがFlashにメッセージとして送るため
exit;
}
mysql_select_db($db_name,$connect);
mysql_set_charset('sjis',$connect);
//Flashで投票されたバージョン名を取得
$myversion = $_POST['selectedver'];
//mySQLのテーブルを更新
$sql = "update flashversion set amount=amount+1 where fversion='$myversion'";
$rs = mysql_query($sql,$connect);
//SQLテーブルから更新された投票総数を取得
$sql = 'select sum(amount) as total from flashversion';
$rs = mysql_query($sql,$connect);
$gokei = mysql_fetch_assoc($rs);
$sokei = $gokei['total'];
echo "&sokei=$sokei&";
//SQLテーブルから各バージョンの獲得投票数を取得し、区切り(/)をつけてつなぐ
$sql = 'select amount from flashversion';
$rs = mysql_query($sql,$connect);
$toflash= "";
while($row=mysql_fetch_assoc($rs)) {
foreach($row as $key => $val) {
$toflash .= $val."/";
}
}
//末尾の / を削除
$toflash = substr($toflash, 0, -1);
//Flashにデータを送る
echo "&val=$toflash&";
echo "&msg=$time&";
if($rs) {
// 結果セットの解放
mysql_free_result($rs);
//databaseサーバー切断
mysql_close($connect);
}
?>
|