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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

Регистрация: Apr 2010
Сообщений: 7
По умолчанию Проблема с получением и отправкой значений переменных на сервер

Помогите,пожалуйста.
У меня такая проблема - моё приложение должно делать запросы к серверу ВКонтакте на использование функций putVariable и getVariable. Делать-то делает, но результаты, которые я получаю из xml все спутанные, они не соотвествуют значениям, которые должны быть. Мне кажется, что это от того, что запросы поступают асинхронно. А как сделать синхронизацию я не знаю.
У меня вопрос:
1) дело ли тут в синхронизации как я и полагаю?
2) а если нет, то в чем?
3) что надо сделать, чтобы мне приходили правильные значения переменных?

Код AS3:
<mx:Script>
    <![CDATA[
        import com.adobe.crypto.MD5;
 
        import flash.display.*;
        import flash.events.*;
        import flash.net.*;
        import mx.controls.Alert;
 
        public var var1:int, var2:int = 0, girlclicknum:int, boyclicknum:int = 0;
        public var girlcount:int, boycount:int = 0; 
        public var indic1:int, indic2:int;
        public var girlcount_in_percent:Number = 0;
        public var boycount_in_percent:Number = 0;
        public var xxx1:XML, xxx2:XML;
 
        private function girlbuttonclickHandler():void
        {
            getV("1041");
            indic1 = parseInt(xxx1.text());
            Alert.show(indic1.toString(), "3", Alert.OK);
 
            if (indic1 == 0)
            {	
                this.currentState = 'girlpushing1';
                putV("1041", "1");
                while(true)
                {
                    if (i2 == 1)
                        break;
                }
 
                i2 = 0;
                var1 = int(getV("16"));
                Alert.show(var1.toString(), "Var1", Alert.OK);
 
                var1++;
                indic1 = 1;
                Alert.show(var1.toString(), "T4", Alert.OK);
 
                putV("16", var1.toString());
                lab2.text = var1.toString();
 
                putV("1041", "1");
 
                indic1 = int(getV("1041"));
                Alert.show(indic1.toString(), "indic1-2", Alert.OK);
 
                girlclicknum = int(getV("17"));
                girlclicknum++;
                putV("17", String(girlclicknum));
                lab4.text = girlclicknum + "";
 
                girlcount = int(getV("18"));
                girlcount = var1 * girlclicknum;
                putV("18", String(girlcount));
                count_in_percent();
 
                l2.text = var1 + " X " + girlclicknum + " = ";
                l3.text = girlcount + "";
                l4.text = Math.round(girlcount_in_percent * 100) + "%";
                l8.text = 100 - Math.round(girlcount_in_percent * 100) + "%";
 
                indic2 = 0;
                putV("1042", "0");
                bottomlabel.text = "";
            } 
            else 
            {
                this.currentState = 'girlpushing1';
 
                girlclicknum = int(getV("17"));
                girlclicknum++;
                putV("17", String(girlclicknum));
 
                lab4.text = girlclicknum + "";
                girlclicknum = int(getV("17"));
                girlclicknum++;
                putV("17", String(girlclicknum));
                girlbutton.label = "Отдать девочкам " + girlclicknum + " клик";
 
                girlclicknum = int(getV("17"));
                girlclicknum--;
                putV("17", String(girlclicknum));
 
                girlcount = int(getV("18"));
                girlcount = var1 * girlclicknum;
                putV("18", String(girlcount));
 
                count_in_percent();
 
                l2.text = var1 + " X " + girlclicknum + " = ";
                l3.text = girlcount + "";
                l4.text = Math.round(girlcount_in_percent * 100) + "%";
                l8.text = 100 - Math.round(girlcount_in_percent * 100) + "%";
                indic2 = 0;
                putV("1042", "0");
            }
 
            if (girlcount < boycount)
                bottomlabel.text = "Вы на стороне девочек и вы проигрываете! пожнажмите!";
            else bottomlabel.text = "Вы на стороне девочек и вы лидируете! так держать!";
                topwindow2.width = topwindow1.width * girlcount_in_percent;
        }
 
        private function boybuttonclickHandler():void
        {
            if (indic2 == 0) 
            {	
                this.currentState = 'boypushing1';
                boybutton.currentState = "boypushing1";
 
                var2++;
                indic2 = 1;
                lab6.text = var2 + "";
                boyclicknum++;
                lab8.text = boyclicknum + "";
                boycount = var2 * boyclicknum;
                count_in_percent();
                l6.text = var2 + " X " + boyclicknum + " = ";
                l7.text = boycount + "";
                l4.text = Math.round(girlcount_in_percent * 100) + "%";
                l8.text = 100 - Math.round(girlcount_in_percent * 100) + "%";
                indic1 = 0;
            } 
            else 
            {
                this.currentState = 'boypushing1';
                boyclicknum++;
                lab8.text = boyclicknum + "";
                boyclicknum++;
                boybutton.label = "Отдать мальчикам " + boyclicknum + " клик";
                boyclicknum--;
                boycount = var2 * boyclicknum;
                count_in_percent();
                l6.text = var2 + " X " + boyclicknum + " = ";
                l7.text = boycount + "";
                l4.text = Math.round(girlcount_in_percent * 100) + "%";
                l8.text = 100 - Math.round(girlcount_in_percent * 100) + "%";
                indic1 = 0;
            }
 
            if(boycount < girlcount)
                bottomlabel.text = "Вы на стороне мальчиков и вы проигрываете! пожнажмите!";
            else 
                bottomlabel.text = "Вы на стороне мальчиков и вы лидируете! так держать!";
 
            topwindow2.width = topwindow1.width * girlcount_in_percent;
 
            //image1.width=topwindow2.width-30;
            //boywindow.width = (girlwindow.width + boywindow.width) * boycount_in_percent;
        }
 
        private function count_in_percent():void
        {
            var commoncount:int = 0;
            commoncount = girlcount + boycount;
            girlcount_in_percent = girlcount / commoncount;
            boycount_in_percent = boycount / commoncount;
        }
 
        private function getV(i_key:String):void
        {
            var r:URLRequest = new URLRequest("http://api.vkontakte.ru/api.php");
            var l:URLLoader = new URLLoader();
            var v:URLVariables = new URLVariables();
 
            // Юзер, список друзей которого нужно вывести
            // В данном случае берем юзера просматривающего рпиложение
            var viewerID:String = root.loaderInfo.parameters.viewer_id;
 
            //var viewerID:String="1248914";
            //ID приложения
            var apiID:String = "1725165";
 
            //Секретный ключ приложения
            var secret:String = "4G2wvxqZdy";
 
            // Необходимый метод изи АПИ
            var methodFromAPI:String = "getVariable";
 
            // Для тестов не локально должно быть 0
            var testMode:String = "1";
 
            v.api_id = apiID;
            v.v = "2.0"; // Версия АПИ
            v.method = methodFromAPI;
            v.test_mode = testMode;
            v.key = i_key;
            v.sig = MD5.hash((viewerID + "api_id=" + apiID + "key=" + i_key + "method=" +  methodFromAPI + "test_mode=" + testMode + "v=2.0" + secret));
 
            r.data = v;
            r.method = URLRequestMethod.POST;
 
            l.load(r);
            l.addEventListener(Event.COMPLETE, loader_completeHandler1);
        }
 
        private function putV(i_key:String, i_value:String):void
        {
            var r:URLRequest = new URLRequest("http://api.vkontakte.ru/api.php");
            var l:URLLoader = new URLLoader();
            var v:URLVariables = new URLVariables();
 
            // Юзер, список друзей которого нужно вывести
            // В данном случае берем юзера просматривающего рпиложение
            var viewerID:String = root.loaderInfo.parameters.viewer_id;
 
            //var viewerID:String="1248914";
            //ID приложения
            var apiID:String = "1725165";
 
            //Секретный ключ приложения
            var secret:String = "4G2wvxqZdy";
 
            // Необходимый метод изи АПИ
            var methodFromAPI:String = "putVariable";
 
            // Для тестов не локально должно быть 0
            var testMode:String = "1";
 
            v.api_id = apiID;
            v.v = "2.0"; // Версия АПИ
            v.method = methodFromAPI;
            v.test_mode = testMode;
            v.key = i_key;
            v.value = i_value;
            v.sig = MD5.hash(viewerID + "api_id=" + apiID + "key=" + i_key + "method=" + methodFromAPI  + "test_mode=" + testMode + "v=2.0" + "value=" + i_value + secret);
 
            r.data = v;
            r.method = URLRequestMethod.POST;
 
            l.load(r);
            l.addEventListener(Event.COMPLETE, loader_completeHandler2);
        }
 
        private function loader_completeHandler1(event:Event):void
        {
            xxx1 = new XML(event.target.data);
            Alert.show(xxx1.text(), "1", Alert.OK);
        }
 
 
        private function loader_completeHandler2(event:Event):void
        {
            xxx2 = new XML(event.target.data);
            Alert.show(xxx2.text(), "2", Alert.OK);
        }
    ]]>
</mx:Script>


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

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

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


 


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


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