Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Объект обмена между PHP + Flash, ваши мнения. (http://www.flasher.ru/forum/showthread.php?t=158376)

vobar 18.06.2011 23:55

Объект обмена между PHP + Flash, ваши мнения.
 
Здравствуйте, уважаемые!
Хочу отдать вам на суд объект обмена данными между php и flash(AS3).
Желаю узнать ваши мнения и всевозможные поправки/рекомендации.

Предупрежу сразу - отправка данных - переменные, получение - архивная строка, сжатая gzcompress($string, 9);

Код AS3:

package sl_pkg
{
 
        import flash.net.URLVariables;
        import flash.net.URLLoaderDataFormat;
        import flash.events.EventDispatcher;
 
        public class send_load extends EventDispatcher
        {
                //событие. окончание получения данных с сервера
                public static const DATA_LOADED:String = "loaded";
                //данные, полученные с сервера строка
                public var serv_data_string:String = "NIL";
                //данные, полученные с сервера массив
                public var serv_data_array:Array = new Array();
 
                public function send_load()
                {
                        // constructor code
                }
 
                public function server_send_load(post_data:String):void
                {
                        import flash.events.Event;
                        import flash.net.URLLoader;
                        import flash.net.URLRequest;
                        import flash.net.URLRequestMethod;
                        import flash.net.URLVariables;
                        import flash.net.URLLoaderDataFormat;
                        import flash.utils.ByteArray;
 
 
                        //создаем запрос
                        var URL_request:URLRequest= new  URLRequest("http://localhost/mobGame/script/request_analyzer.php");
                        //метод передачи данных - POST
                        URL_request.method = URLRequestMethod.POST;
                        //заполняем запрос
                        var URL_vars:URLVariables = new URLVariables(post_data);
                        //устанавливаем формат данных как переменные
                        URL_vars.dataFormat = URLLoaderDataFormat.VARIABLES;
                        //заносим данные в запрос
                        URL_request.data = URL_vars;
 
                        //создаем приемник
                        var URL_loader :URLLoader = new URLLoader();
                        //слушатель
                        URL_loader.addEventListener(Event.COMPLETE, receive_response);
                        URL_loader.dataFormat = URLLoaderDataFormat.BINARY;
                        URL_loader.load(URL_request);
 
 
                        //тут храним ответ от сервера
                        var serv_data:String = 'php_error=003';
 
                        //обработка ответа из sendlogin.php
                        function receive_response(e:Event):void
                        {
                                var data_byteArray:ByteArray = e.target.data;
 
 
                                var ab:ByteArray = new ByteArray();
                                ab.writeMultiByte('ss=1','x-ansi');
                                ab.compress();
                                trace(ab,ab.length, ab[3].toString(16));
 
                                trace(data_byteArray,data_byteArray.length, data_byteArray[3].toString(16));
 
                                data_byteArray.uncompress();
 
 
 
                                //var loader:URLLoader = URLLoader(e.target);
                                //получение строки данных
                                serv_data_string = data_byteArray.toString();//new URLVariables(loader.data).toString();
                                trace(serv_data_string);
                                var serv_data_splitted_pairs = serv_data_string.split("&");
                                var subarray:Array = new Array();
                                //получение ассоциативного массива данных
                                for each (var pair:String in serv_data_splitted_pairs)
                                {
                                        subarray = pair.split("=");
                                        serv_data_array[subarray["0"]] = subarray["1"];
                                }
 
 
                                URL_loader.removeEventListener(Event.COMPLETE, receive_response );
                                dispatchEvent(new Event(send_load.DATA_LOADED));
                        }
                }
        }
}

Событие DATA_LOADED - для отслеживания окончания загрузки данных.

P.S. Если кто-то напишет "Я могу и лучше", не будет ли он любезен сказать: где лучше и как, потому как я полный новичёк в этом деле и тоже хочу научиться писать программы. :)

3p.station 19.06.2011 01:29

если вы хотите делиться своими идеями и тем более, чтобы ктото читал ваш код, вам необходимо ознакомиться с этим. код очень неочень :) ну и вложенные функции...

+ импорты надо все делать в одном месте в теле пакета

КорДум 19.06.2011 01:51

И типизации нет.

fish_r 19.06.2011 02:22

Нубский вопрос: а, разве gzip не декомпрессится до попадания во флешку? Средствами браузера.

Crazy 19.06.2011 02:28

Цитата:

Сообщение от 3p.station (Сообщение 1004684)
ознакомиться с этим.

С этим на надо знакомится. Это надо забыть как страшный сон.

Оригинал:

Цитата:

Parameterless methods should generally not be named getFooBar() or setFooBar(); these should be implemented as getter/setters instead.
Так называемый "перевод":

Цитата:

Параметризующие методы нельзя называть getFooBar() и setFooBar(); они должны быть реализованы в виде геттеров/сеттеров.
Пусть "переводчик" не осознает разницы между "нельзя называть" и "как правило не следует называть". Это печально, но ничего уж не поделаешь. Но перевести тривиальное "Parameterless" как "Параметризующие" (параме.... что делающие?!) -- это полный финиш. Двухнедельный курс эвтаназии три раза в день после еды.

В этом "переводе" такого бреда полно.

Забыть как страшный cон и НИКОГДА, НИКОГДА никому не показывать.

3p.station 19.06.2011 09:48

ну для знатоков инглиша там есть ссыль на оригинал, + еще один перевод на русском, но в общем твою идею понял :)

Crazy 19.06.2011 11:14

Цитата:

Сообщение от 3p.station (Сообщение 1004721)
ну для знатоков инглиша там есть ссыль на оригинал, + еще один перевод на русском, но в общем твою идею понял :)

Чтобы было понятнее -- аналогия. Представьте себе, что у Вас есть поваренная книга. В ней рецепт с фрагментом "add a handful of blueberries" и два перевода:

1. "Добавьте горсть белены"
2. "Добавьте горсть волчьих ягод"

Второй перевод не сильно лучше первого. :) Да, опасного там меньше. Но смысл порушен в целом в той же степени -- если в одном пирог Вы будете выпекать в холодильнике, то в другом тесто будете делать без воды. А так -- да, отличные переводы. Подспорье тем, у кого трудности с языком но очень хочется готовить.

Де-факто в обоих случаях это не перевод, а "вольный пересказ того, как Имярека угораздило понять оригинал".

3p.station 19.06.2011 13:48

может есть более осознанный перевод ?

S-ed 19.06.2011 15:52

Насчет сеттеров. Иногда они требуют разную область видимости, а это невозможно. Так что данный перевод дезинформирует пользователя (мол так нелья), что не есть гуд.

И я думаю, что теме место в разделе "Серверные технологии и Flash".

Crazy 19.06.2011 16:37

Цитата:

Сообщение от S-ed (Сообщение 1004780)
Насчет сеттеров. Иногда они требуют разную область видимости, а это невозможно. Так что данный перевод дезинформирует пользователя (мол так нелья), что не есть гуд.

Есть мнение, что геттеры и сеттеры не должны иметь разную область видимости -- это аномалия проектирования. К примеру, в UML Вы просто никак не сможете описать свойство, которое public на чтение и private на запись. Хочется сделать приватный "сеттер" -- назовите его assignFoobar вместо setFoobar.

vobar 19.06.2011 18:42

Ясно, спасибо. Хоть одну осознанную ссылку дали. Зато пофлудили...

S-ed 20.06.2011 02:22

Crazy
Согласен. Сам так не делаю. =)

vobar
Простите. =Р


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

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