
Код AS3:
package sps {
import vk.*;
import flash.display.Sprite;
import flash.events.*;
import flash.net.*;
public class CWorkingPHP extends Sprite
{
private var r_i:Object;//сцена
private var host:String = 'http://vitgame11.guru-hosting.ru/phpGame';//сервер
private var wins:uint=0;//количество побед
private var losses:uint=0;//количество поражений
private var uidString:String; //текущий пользователь
private var uid:uint;
private var xml:XML;// обьект который будет хранить информацию полученную из БД в XML формате
private var flashVars: Object;//данные из VK
private var flag:Boolean=true;
private var WIN:String = "WIN";
private var LOOSE:String = "LOOSE";
private var DRAW:String = "DRAW";
//-----------------------------------------------------------------------------------------------конструктор с параметрами
public function CWorkingPHP(r:Object)
{
r_i = Object(r);//делаем ссылку на сцену
flashVars = r_i.stage.loaderInfo.parameters as Object;//получаем данные о user
uidString = flashVars['viewer_id'];//uid текущего пользователя
this.uid = uint(uidString);
r_i.btn_newgame.visible = false;//кнопка start не видна
takeData();//загружаем данные из БД
Game();//процесс игры
}
//-----------------------------------------------------------------------------------------------настройка видимости кнопок на сцене
private function hidingButtons(stone:Boolean, scissors:Boolean, paper:Boolean, message:String, flag:Boolean):void
{
r_i.btn_stone.visible = stone;
r_i.btn_scissors.visible = scissors;
r_i.btn_paper.visible = paper;
r_i.txt_message.text = message;
this.flag = flag;
}
//-----------------------------------------------------------------------------------------------отправка данных на сервер через PHP
private function sendData(outcomeGame:uint):void
{
var loader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest(host+'/setPHP.php');
var variables :URLVariables = new URLVariables();
variables.methot = URLRequestMethod.GET;
variables['uid'] = uid;
variables['score_res'] = outcomeGame;
req.data = variables;
loader.load(req);
loader.addEventListener(Event.COMPLETE, updateForms);
}
//-----------------------------------------------------------------------------------------------получение данных с сервера
private function dataLoaded(e:Event):void
{
xml = new XML(e.target.data);
//парсим XML и сохраняем в глобальные переменные
this.wins=xml..wins;
this.losses=xml..losses;
//полученные данные о победах и поражениях текущего польз. заполняем в формы
r_i.txt_wins.text = String(this.wins);
r_i.txt_losses.text = String(this.losses);
}
private function takeData():void
{
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest(host+'/getPHP.php?uid='+uid));//загружаем php, и походу дела XML
loader.addEventListener(Event.COMPLETE, dataLoaded);
}
private function updateForms(e:Event):void
{
takeData();
}
//-----------------------------------------------------------------------------------------------процесс игры
private function Game():void
{
r_i.btn_stone.addEventListener(MouseEvent.CLICK, pushStone);
function pushStone(e:MouseEvent):void
{
if(flag)
{
var temp:uint = randRange(1, 3);//решение компьютера
if(temp==2)
{
wins++;
sendData(1);//обновление данных в БД
hidingButtons(true,true,false,WIN,false);//исчезает кнопка не выбранная ни компьютером ни пользователем
r_i.btn_newgame.visible = true;//появляется кнопка новой игры
}
else if(temp==3)
{
losses++;
sendData(0);
hidingButtons(true,false,true,LOOSE,false);
r_i.btn_newgame.visible = true;
}
else//ничия
{
hidingButtons(true,false,false,DRAW,false);
r_i.btn_newgame.visible = true;
}
//обновляем значения в формах
r_i.txt_wins.text = String(wins);
r_i.txt_losses.text = String(losses);
}
}
r_i.btn_scissors.addEventListener(MouseEvent.CLICK, pushScissors);
function pushScissors(e:MouseEvent):void
{
if(flag)
{
var temp:uint = randRange(1, 3);//решение компьютера
if(temp==1)
{
losses++;
sendData(0);
hidingButtons(true,true,false,LOOSE,false);
r_i.btn_newgame.visible = true;
}
else if(temp==3)
{
wins++;
sendData(1);
r_i.btn_stone.visible = false;
r_i.txt_message.text = WIN;
hidingButtons(false,true,true,WIN,false);
r_i.btn_newgame.visible = true;
}
else
{
hidingButtons(false,true,false,DRAW,false);
r_i.btn_newgame.visible = true;
}
r_i.txt_wins.text = String(wins);
r_i.txt_losses.text = String(losses);
}
}
r_i.btn_paper.addEventListener(MouseEvent.CLICK, pushPaper);
function pushPaper(e:MouseEvent):void
{
if(flag)
{
var temp:uint = randRange(1, 3);//решение компьютера
if(temp==1)
{
wins++;
sendData(1);
hidingButtons(true,false,true,WIN,false);
r_i.btn_newgame.visible = true;
}
else if(temp==2)
{
losses++;
sendData(0);
r_i.btn_stone.visible = false;
r_i.txt_message.text = LOOSE;
hidingButtons(false,true,true,LOOSE,false);
r_i.btn_newgame.visible = true;
}
else
{
hidingButtons(false,false,true,DRAW,false);
r_i.btn_newgame.visible = true;
}
r_i.txt_wins.text = String(wins);
r_i.txt_losses.text = String(losses);
}
}
r_i.btn_newgame.addEventListener(MouseEvent.CLICK, newGame);//по нажатию кнопки start, все выставляется по умолчанию
function newGame(e:MouseEvent):void
{
r_i.btn_stone.visible = true;
r_i.btn_scissors.visible = true;
r_i.btn_paper.visible = true;
r_i.txt_message.text = '';
hidingButtons(true,true,true,'',true);
r_i.btn_newgame.visible = false;
}
}
//-----------------------------------------------------------------------------------------------генерируем цифру
private function randRange(minNum:uint, maxNum:uint):uint
{
return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
}
}//class
}//package
Работа выполнялась в Adobe Flash Professional cs5. Я просто накидал сцену, создал кнопки и для того чтоб манипулировать созданной сценой, передаю ссылку на нее в класс...
Удивитесь вы или нет но такой подход описан именно в КОЛИН МУКЕ...