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

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

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

Регистрация: Jun 2012
Адрес: Татарстан
Сообщений: 118
По умолчанию передача классов из PHP в AS3

Здравствуйте!
Подскажите кто нибудь пробовал передавать классы из пхп прямо в ас методом ПОСТ?
Разбирал клиент одной игры и обнаружил, что там идут запрос пхп далее вот что происходит с полученным ответом addChild(this.loader);

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
одной строки мало, хочется увидеть ВЕСЬ код
__________________
Марк Tween

Старый 06.09.2013, 17:15
razerw вне форума Посмотреть профиль Отправить личное сообщение для razerw Найти все сообщения от razerw
  № 3  
Ответить с цитированием
razerw

Регистрация: Jun 2012
Адрес: Татарстан
Сообщений: 118
Лишнее убрал оставил самое нужное.

Код AS3:
package 
{
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
 
    public class Preloader_in_acc extends MovieClip
    {
        private var loader:Loader;
        private var preloaderBody:PreloaderBody;
        private var puidUser:String;
 
        public function Preloader_in_acc()
        {
            stage.scaleMode = StageScaleMode.SHOW_ALL;
            this.preloaderBody = new PreloaderBody();
            this.preloaderBody.txt.autoSize = TextFieldAutoSize.CENTER;
            addChild(this.preloaderBody);
            if (loaderInfo.parameters["puid"] == undefined)
            {
                this.puidUser = "0";
            }
            else
            {
                this.puidUser = loaderInfo.parameters["puid"];
            }
            var variables:* = new URLVariables("***********");
            var request_auto:* = new URLRequest();
            request_auto.url = "****************";
            request_auto.method = URLRequestMethod.POST;
            request_auto.data = variables;
            var loader_auto:* = new URLLoader();
            loader_auto.dataFormat = URLLoaderDataFormat.VARIABLES;
            loader_auto.addEventListener(Event.COMPLETE, this.completeAutoRequest);
            loader_auto.addEventListener(IOErrorEvent.IO_ERROR, this.ioErrorAutoRequest);
            try
            {
                loader_auto.load(request_auto);
            }
            catch (e:Error)
            {
                preloaderBody.txt.text = "Load request error!";
            }
            return;
        }// end function
 
        function completeAutoRequest(event:Event) : void
        {
            var request:URLRequest;
            var event:* = event;
            try
            {
                this.loader = new Loader();
                this.loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.ioErrorHandler);
                this.loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, this.progressEvent);
                this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.progressComplete);
                request = new URLRequest(this.patio(event.target.data.em, event.target.data.pa));
                this.loader.load(request);
            }
            catch (e:Error)
            {
                preloaderBody.txt.text = "Session error!";
            }
            return;
        }// end function
 
        function ioErrorAutoRequest(event:IOErrorEvent) : void
        {
            this.preloaderBody.txt.text = "Error connect!";
            return;
        }// end function
 
        private function ioErrorHandler(event:IOErrorEvent) : void
        {
            this.preloaderBody.txt.text = "IO Error!";
            return;
        }// end function
 
        private function progressEvent(event:ProgressEvent) : void
        {
            this.preloaderBody.txt.text = Math.round(event.bytesLoaded / event.bytesTotal * 100) + "%";
            return;
        }// end function
 
        private function progressComplete(event:Event) : void
        {
            removeChild(this.preloaderBody);
            this.preloaderBody = null;
            addChild(this.loader);
            return;
        }// end function
 
// end function
 
    }
}

Старый 06.09.2013, 17:46
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 4  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Loader автоматически интерпретирует загруженные данные, он распазнаёт: SWF-файлы либо файлы изображений (JPG, PNG или GIF).

В вашем примере php вообще не причём. Он может вернуть ссылку на swf, который уже загрузит флешка, либо swf сам по себе может лежать на сервере и ждать прямого запроса.

Класс в виде "текстовых данных" загрузить во флешь хоть из php или ещё как - нельзя. Классы AS должны быть предварительно скомпилированны в swf или другой специальный формат файла, загрузив который, уже можно получить доступ к классам.

пс. На самом деле, загрузить классы прямиком как текстовые данные с последующей компиляцией прямо на клиенте - теоретически возможно и наверное даже есть готовые библиотеки для этого, но это отдельные исключительные случаи.
__________________
Дети не должны знать о своих родителях

Старый 06.09.2013, 21:28
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 5  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
В примере dataFormat у экземпляра URLLoader выставлен в URLLoaderDataFormat.VARIABLES. Это позволяет подтягивать переменные из пар "ключ=значение".
PHP:
Код:
<?php
echo "status=ok";
?>
ActionScript:
Код AS3:
var vLoader:URLLoader = new URLLoader();
vLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
vLoader.addEventListener(Event.COMPLETE, OnVariablesLoaded);
vLoader.load(new URLRequest('http://localhost/test.php'));
...
private function OnVariablesLoaded(e:Event):void 
{
    trace(e.target.data.status); //ok
}
В e.target.data(то есть, в поле data URLLoader'a) будет записан экземпляр класса URLVariables с полями, именующимися согласно полчуенным ключам. По-моему, этот метод - наследие загрзуки конфигурационных файлов подобного формата в AS2. В реальных проектах лучше использовать JSON или XML(желательно сериализировать для удобства представления данных и последующего рефакторинга), либо, для вариантов посерьезнее, Prorobuf или AMF.

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
 if (loaderInfo.parameters["puid"] == undefined)
            {
                this.puidUser = "0";
            }
            else
            {
                this.puidUser = loaderInfo.parameters["puid"];
            }
После этого, я бы даже не стал смотреть этот код - писал инвалид. Достаточно проверки else
__________________
Марк Tween

Старый 11.09.2013, 17:10
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 7  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Цитата:
Сообщение от in4core Посмотреть сообщение
Код AS3:
 if (loaderInfo.parameters["puid"] == undefined)
            {
                this.puidUser = "0";
            }
            else
            {
                this.puidUser = loaderInfo.parameters["puid"];
            }
После этого, я бы даже не стал смотреть этот код - писал инвалид. Достаточно проверки else
хаха, может в this.puidUser по умолчанию должно быть "0", а ты его инвалидом...

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
private var puidUser:String = "0"  - это умолчание
а это проверка
 if (loaderInfo.parameters["puid"]) this.puidUser = loaderInfo.parameters["puid"]
__________________
Марк Tween

Старый 11.09.2013, 18:14
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 9  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Tails Посмотреть сообщение
Класс в виде "текстовых данных" загрузить во флешь хоть из php или ещё как - нельзя. Классы AS должны быть предварительно скомпилированны в swf или другой специальный формат файла, загрузив который, уже можно получить доступ к классам.
Можно динамически создаваться классы, наследоваться от других и так далее
Код AS3:
var source:String = (<![CDATA[
		     getlocal_0
		     pushscope
		     getlocal_2
		     iffalse L0
		     getlocal_1
		     pushbyte 100
		     multiply
		     convert_i
		     setlocal_1
		     jump L1
		     L0:
		     getlocal_1
		     pushshort 1000
		     multiply
		     convert_i
		     setlocal_1
		     L1:
		     getlocal_1
		     returnvalue
	]]>).toString();
 
methodBuilder.addAsmSource(source);
Но требует более продвинутых навыков нежели у ТС.

Добавлено через 4 минуты
Цитата:
Сообщение от in4core Посмотреть сообщение
Код AS3:
private var puidUser:String = "0"  - это умолчание
а это проверка
 if (loaderInfo.parameters["puid"]) this.puidUser = loaderInfo.parameters["puid"]
а я бы вообще написал
Код AS3:
this.puidUser = loaderInfo.parameters["puid"] ? loaderInfo.parameters["puid"] : '0';
__________________
return this...

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
а я бы вообще написал
Что тоже было бы лишним, дабы вы использовали 2 проверки, а не одну
__________________
Марк Tween

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

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

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


 


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


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