![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 26
|
Игра, КАМЕНЬ НОЖНИЦЫ БУМАГА ДЛЯ КОНТАКТА
моя первая работа, не судите строго!) 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. Я просто накидал сцену, создал кнопки и для того чтоб манипулировать созданной сценой, передаю ссылку на нее в класс... Удивитесь вы или нет но такой подход описан именно в КОЛИН МУКЕ... |
|
|||||
|
1. То, что написано в этом коде не имеет никакого отношения к тому коду, который вы привели в начале. Название переменной "r_i" здесь как-то не похоже на название "stage" в предыдущем коде. Поэтому вариант со "stage" не работает, а вариант с "r_i" будет работать.
2. Речь шла не о сцене - рабочей области главной временной шкалы (экземпляр класса MainTimeline, который вы передаете в класс), а о сцене - экземпляре класса Stage. Отсюда и произошло непонимание и холивар. Согласен - передавать ссылку на экранные обьекты в конструктор можно, но в конце концов: не называть же их "stage" ![]()
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 07.02.2012 в 00:35. |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 26
|
ну по сути такая ссылка даст возможность делать так
.
Не на что не претендую, просто хотел показать человеку как можно оторваться от кадров... |
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
я бы посоветовал начать с перехода на flashdevelop
|
|
|||||
|
Регистрация: Nov 2005
Сообщений: 148
|
И как в FD привязывать рисованную графику?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|