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

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

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

Регистрация: Feb 2011
Адрес: Я в Энгельсе
Сообщений: 2
Cool Переадресация, переход и обмен с php

Здравствуйте, меня зовут Михаил. В недавнее время занялся создание флеш-браузерной игры. И с некоторыми моментами у меня появились загвоздки. Так как с AS3 я общаюсь всего несколько дней сильно не ругать, а я постараюсь сильно нубские вопросы не задавать.
Первая моя загвоздка это необходимость перейти на другую *.php страницу. Итак я немного по гуглил, получил кучу информации(не принесшей мне результатов). Я это делал так:
Код AS3:
var url:URLRequest = new URLRequest("game.php"); //game.php - лежит в одной папке с исполняемым файлом.
        navigateToURL(url,"_self");
Весь файл:
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="absolute" backgroundColor="#ffffff" backgroundImage="img/bg.jpg" width="400" height="300" xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script><![CDATA[ 
   import mx.rpc.events.ResultEvent; //при написании кода вручную, эти импорты появляються сами, первый нужен для 
   import mx.controls.Alert; //определения результата, второй для вывода всплывающих окон 
   import flash.net.navigateToURL; 
 
   private var pic_arr_m:Array = ["img/men1-1.png", "img/men1-2.png", "img/men1-3.png", "img/men1-4.png"]; //создаем масив, который хранит путь к картинкам мужского пола 
   private var pic_arr_w:Array = ["img/women2-1.png", "img/women2-2.png", "img/women2-3.png", "img/women2-4.png"]; //создаем масив, который хранит путь к картинкам женского пола 
   private var i:int = 0; //числовая переменная равна 0 
   [Bindable] //сам еще не знаю для чего нужна это строка, но без нее выдает ошибку 
   private var gr:String = "1"; //текстовая переменная равна 1 
   [Bindable] 
   private var patch:String = "img/man1-1.swf"; //текстовая переменная 
   [Bindable] 
   private var per:int; //переменная для проверки создания чара 
 
   /* Функция создания чара, отправляет данные которые ввел пользователь */ 
   private function onCreateChar():void { 
    createRequest.send();
   } 
   /* Функция выбора RadioButton мужского пола */ 
   private function iMen():void { 
    avatar.load(pic_arr_m[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку 
    gr = "1"; //переменная равна 1 
    simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" 
   } 
   /* Функция выбора RadioButton женского пола */ 
   private function iWomen():void { 
    avatar.load(pic_arr_w[0]); //отображает картинку, которая равна 0 в масиве, тоесть первую картинку 
    gr = "2"; //переменная равна 1 
    simpleLabel.text = "2-1"; //тег <mx:Text> который имеет имя simpleLabel равен "2-1" 
   } 
   /* Функция нажатия кнопки "Пред." */ 
   private function onLeft():void { 
    if (men.selected == true){ //если выбран пол "Мужской", то 
     avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" 
     i--; //переменная уменьшаеться на 1 
     if (i == -1) { //если переменная "i" равна -1, то 
      i = 3; //"i" равна 3 
     } 
    if (i == 0) { //если "i" равна 0, то 
     simpleLabel.text = "1-1"; //тег <mx:Text> который имеет имя simpleLabel равен "1-1" 
     avatar.load(pic_arr_m[0]); //будет отображать первый аватар 
     patch = "img/man1-1.swf"; //путь к аватару 
    } 
    if (i == 1) { 
     simpleLabel.text = "1-2"; 
     avatar.load(pic_arr_m[1]); 
     patch = "img/man1-2.swf"; 
    } 
    if (i == 2) { 
     simpleLabel.text = "1-3"; 
     avatar.load(pic_arr_m[2]); 
     patch = "img/man1-3.swf"; 
    } 
    if (i == 3) { 
     simpleLabel.text = "1-4"; 
     avatar.load(pic_arr_m[3]); 
     patch = "img/man1-4.swf"; 
    } 
    } 
     if (women.selected == true) { //если выбран пол "Женский", то 
      avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" 
      i--; //переменная уменьшаеться на 1 
      if (i == -1) { //если переменная "i" равна -1, то 
       i = 3; //"i" равна 3 
      } 
    if (i == 0) { 
     simpleLabel.text = "2-1"; 
     avatar.load(pic_arr_w[0]); 
     patch = "img/woman2-1.swf"; 
    } 
    if (i == 1) { 
     simpleLabel.text = "2-2"; 
     avatar.load(pic_arr_w[1]); 
     patch = "img/woman2-2.swf"; 
    } 
    if (i == 2) { 
     simpleLabel.text = "2-3"; 
     avatar.load(pic_arr_w[2]); 
     patch = "img/woman2-3.swf"; 
    } 
    if (i == 3) { 
     simpleLabel.text = "2-4"; 
     avatar.load(pic_arr_w[3]); 
     patch = "img/woman2-4.swf"; 
    }    
     } 
   } 
   /* Функция нажатия кнопки "След." */ 
   private function onRight():void { 
    if (men.selected == true){ //если выбран пол "Мужской", то 
     avatar.load(pic_arr_m[i]); //картинка равняеться переменной "i" 
     i++; //переменная увеличиваеться на 1 
     if (i == 4) { //если переменная "i" равна 4, то 
      i = 0; //"i" равна 0 
     } 
    if (i == 0) { 
     simpleLabel.text = "1-1"; 
     avatar.load(pic_arr_m[0]); 
     patch = "img/man1-1.swf"; 
    } 
    if (i == 1) { 
     simpleLabel.text = "1-2"; 
     avatar.load(pic_arr_m[1]); 
     patch = "img/man1-2.swf"; 
    } 
    if (i == 2) { 
     simpleLabel.text = "1-3"; 
     avatar.load(pic_arr_m[2]); 
     patch = "img/man1-3.swf"; 
    } 
    if (i == 3) { 
     simpleLabel.text = "1-4"; 
     avatar.load(pic_arr_m[3]); 
     patch = "img/man1-4.swf"; 
    } 
    } 
    if (women.selected == true) { //если выбран пол "Женский", то 
     avatar.load(pic_arr_w[i]); //картинка равняеться переменной "i" 
     i++; //переменная увеличиваеться на 1 
     if (i == 4) { //если переменная "i" равна 4, то 
      i = 0; //"i" равна 0 
     } 
     if (i == 0) { 
     simpleLabel.text = "2-1"; 
     avatar.load(pic_arr_w[0]); 
     patch = "img/woman2-1.swf"; 
    } 
    if (i == 1) { 
     simpleLabel.text = "2-2"; 
     avatar.load(pic_arr_w[1]); 
     patch = "img/woman2-2.swf"; 
    } 
    if (i == 2) { 
     simpleLabel.text = "2-3"; 
     avatar.load(pic_arr_w[2]); 
     patch = "img/woman2-3.swf"; 
    } 
    if (i == 3) { 
     simpleLabel.text = "2-4"; 
     avatar.load(pic_arr_w[3]); 
     patch = "img/woman2-4.swf"; 
    }   
    }  
   } 
 
   /* Функция определения результата */ 
   private function onResult(e:ResultEvent):void { 
     if (int(e.result) > 0) { //если результат больше 0, тоесть существует, то 
      per = int(e.result); //переменная равна данным, что считали с php файла 
      if (per > 0){ //если данные равны 1, то переадресовываем в игру
		  //var url:URLRequest = new URLRequest("game.php");
		  //navigateToURL(url,"_self"); 
		  var url:URLRequest = new URLRequest("game.php");   
          navigateToURL(url,"_self");
      } 
     } else { //в другом случае, если результат не существует, то 
      switch (int(String(e.result))) { //считываем данные 
       case -1 : //если данные равны "-1", то выводим всплывающее окно 
        Alert.show("Неудалось подключиться к базе данных. Попробуйте позже", "Ошибка!"); 
        break; 
       case -2 : //если данные равны "-2", то выводим всплывающее окно 
        Alert.show("Такое имя уже существует", "Ошибка!"); 
        break; 
       case -3 : //если данные равны "-3", то выводим всплывающее окно 
        Alert.show("Вы не ввели имя", "Ошибка!"); 
        break; 
       case -4: //если данные равны "-4", то выводим всплывающее окно 
        Alert.show("Недопустимые символы в имени", "Ошибка!"); 
        break; 
      } 
     } 
   } 
  ]]></mx:Script>
    <mx:HTTPService id="createRequest" useProxy="false" method="POST" result="onResult(event)" url="reg_comp.php">
        <mx:request>
            <mx:nameChar>{nameChar.text}</mx:nameChar>
            <mx:avaIm>{simpleLabel.text}</mx:avaIm>
            <mx:gr>{gr.toString()}</mx:gr>
            <mx:patch>{patch.toString()}</mx:patch>
        </mx:request>
    </mx:HTTPService>
    <mx:Label id="simpleLabel" textAlign="center" x="169" y="64" width="36" height="18" color="#000000"/>
    <mx:Button label="Далее" click="onCreateChar()" color="#000000" x="140" y="252" width="100" height="22"/>
    <mx:TextInput id="nameChar" textAlign="center" x="111" y="222" width="160" height="22" color="#000000"/>
    <mx:Image id="avatar" source="img/men1-1.png" x="171" y="93" width="33" height="33"/>
    <mx:RadioButton id="men" label="Мужской" groupName="gander" selected="true" click="iMen()" fontSize="10" x="19" y="41" width="73" height="22" color="#000000" iconColor="#2b2b18" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/>
    <mx:RadioButton id="women" label="Женский" groupName="gander" click="iWomen()" fontSize="10" x="279" y="41" width="74" height="22" color="#000000" iconColor="#2b2b18" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/>
    <mx:Label text="Имя" x="175" y="198" width="36" height="18" color="#000000" themeColor="#dfddd3"/>
    <mx:Button label="Пред." click="onLeft()" color="#000000" x="77" y="141" width="100" height="22" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/>
    <mx:Button label="След." click="onRight()" color="#000000" x="200" y="141" width="100" height="22" textRollOverColor="#ff0000" textSelectedColor="#ff0000"/>
</mx:Application>
Прошу рассказать принцип взаимодействия php и AS3. Особенно интересует как влиять на веб страницу из AS3(скажем: обновить, заставить перейти по ссылке просто и с параметрами в виде POST или GET...
Обилие комментариев в коде, поясняющих сам код, снижают кол-во нубских вопросов


Последний раз редактировалось Ineigo; 23.02.2011 в 19:06.
Старый 23.02.2011, 11:00
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Один вопрос - одна тема. Название темы должно точно отражать суть вопроса.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.02.2011, 20:48
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 3  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
А зачем вообще переходить на другую страницу в данном случае? Легче реализовать стандартную схему swf<=>php. У вас есть главный swf, который обращается к php и является базовым для всей игры. Он обращается к php скрипту(скриптам) с нужными параметрами в зависимости от ситуации, можно даже реализовать сокет соединение при необходимости, и получает ответы. И уже на основании их переходит к нужной сцене, без перехода по страницам. Если swf получается слишком большой, то выгрузить всё лишнее в отдельные swf-ки и подгружать их по мере надобности.

Старый 23.02.2011, 21:15
Ineigo вне форума Посмотреть профиль Отправить личное сообщение для Ineigo Найти все сообщения от Ineigo
  № 4  
Ответить с цитированием
Ineigo

Регистрация: Feb 2011
Адрес: Я в Энгельсе
Сообщений: 2
Цитата:
Сообщение от willis83 Посмотреть сообщение
А зачем вообще переходить на другую страницу в данном случае?
Просто, у меня изначально была идея создать браузерную игру даже для слабого инета. Моих представлений хватило на несколько php страниц и определенными swf... данный код это создания персонажа. (программа FD)
Здесь я его регистрирую и перехожу в game.php со сборным swf(игровое поле)...
Цитата:
Сообщение от willis83 Посмотреть сообщение
Легче реализовать стандартную схему swf<=>php. У вас есть главный swf, который обращается к php и является базовым для всей игры. Он обращается к php скрипту(скриптам) с нужными параметрами в зависимости от ситуации, можно даже реализовать сокет соединение при необходимости, и получает ответы. И уже на основании их переходит к нужной сцене, без перехода по страницам. Если swf получается слишком большой, то выгрузить всё лишнее в отдельные swf-ки и подгружать их по мере надобности.
А как можно в FD сделать все в одном swf. (у меня на данный момент имеется несколько *.mxml файлов...)
Цитата:
Сообщение от willis83 Посмотреть сообщение
И уже на основании их переходит к нужной сцене, без перехода по страницам.
С таким еще не сталкивался... Можно по подробней?

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

Теги
AS3 , игра , передача данных

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

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


 


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


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