Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.02.2012, 00:07
Vitalya вне форума Посмотреть профиль Отправить личное сообщение для Vitalya Найти все сообщения от Vitalya
  № 31  
Ответить с цитированием
Vitalya

Регистрация: Jan 2012
Сообщений: 26
Игра, КАМЕНЬ НОЖНИЦЫ БУМАГА ДЛЯ КОНТАКТА
моя первая работа, не судите строго!)
Код 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
Добавлено через 8 минут
Работа выполнялась в Adobe Flash Professional cs5. Я просто накидал сцену, создал кнопки и для того чтоб манипулировать созданной сценой, передаю ссылку на нее в класс...
Удивитесь вы или нет но такой подход описан именно в КОЛИН МУКЕ...

Старый 07.02.2012, 00:28
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 32  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
1. То, что написано в этом коде не имеет никакого отношения к тому коду, который вы привели в начале. Название переменной "r_i" здесь как-то не похоже на название "stage" в предыдущем коде. Поэтому вариант со "stage" не работает, а вариант с "r_i" будет работать.
2. Речь шла не о сцене - рабочей области главной временной шкалы (экземпляр класса MainTimeline, который вы передаете в класс), а о сцене - экземпляре класса Stage. Отсюда и произошло непонимание и холивар.
Согласен - передавать ссылку на экранные обьекты в конструктор можно, но в конце концов: не называть же их "stage"
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 07.02.2012 в 00:35.
Старый 07.02.2012, 00:31
Vitalya вне форума Посмотреть профиль Отправить личное сообщение для Vitalya Найти все сообщения от Vitalya
  № 33  
Ответить с цитированием
Vitalya

Регистрация: Jan 2012
Сообщений: 26
ну по сути такая ссылка даст возможность делать так
Код AS3:
r_i.stage
.

Не на что не претендую, просто хотел показать человеку как можно оторваться от кадров...

Старый 07.02.2012, 00:37
anmelegov вне форума Посмотреть профиль Отправить личное сообщение для anmelegov Найти все сообщения от anmelegov
  № 34  
Ответить с цитированием
anmelegov
[+4 07.04.12]
[+1 20.01.12]

Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
я бы посоветовал начать с перехода на flashdevelop

Старый 07.02.2012, 02:34
zerAlex2 вне форума Посмотреть профиль Отправить личное сообщение для zerAlex2 Найти все сообщения от zerAlex2
  № 35  
Ответить с цитированием
zerAlex2

Регистрация: Nov 2005
Сообщений: 148
И как в FD привязывать рисованную графику?

Старый 07.02.2012, 03:50
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 36  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
И как в FD привязывать рисованную графику?
Через swc, через подгружаемую swf . 2х вариантов хватит?
__________________
Марк Tween

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:12.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.