Игра «Угадай число» (getHighScores, setUserScore)

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Александр »

JossRoss
При работе с XML - это оператор доступа к более низкому уровню. Посмотри какой XML обрабатывается таким способом и тебе станет понятнее.
http://help.adobe.com/ru_RU/ActionScrip ... -7e6b.html

Евгений
Конечно можно сделать под контейнер. Пиши код, который у тебя получился и не работает.
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Евгений »

Этот самый код, из этой темы не работает:

Код: Выделить всё

var wrapper:Object;this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);function onAddedToStage(e: Event):void {    Security.allowDomain("*");    stage.dispatchEvent(new Event(Event.DEACTIVATE));    stage.dispatchEvent(new Event(Event.ACTIVATE));    wrapper=Object(this.parent.parent);    import vk.VkApiNode;     var api_id:Number=1928400;// ID приложения    var api_secret:String="4Z6iG49p3q";// секретный ключ    var beginMessage:String;    var randomNumber:uint;    var my_guess:uint;    var try_count:int;    var api:VkApiNode;    var url_loader:URLLoader;    var url_request:URLRequest;    var query:String;    var uids:Array;    var fields:Array;    var viewer_id:Number;     // настройка меню по правому клику мыши    var cm = new ContextMenu();    cm.hideBuiltInItems();    var p1:ContextMenuItem=new ContextMenuItem('«Угадай число»');    var p2:ContextMenuItem=new ContextMenuItem('flapps.ru');    p2.separatorBefore=true;    cm.customItems.push(p1,p2);    this.contextMenu=cm;     // создание стиля текста, для вывода рекордов    var myCSS = new StyleSheet();    myCSS.setStyle("a:link", {textDecoration:"none"});    myCSS.setStyle("a:hover", {textDecoration:"underline"});    records_tf.styleSheet=myCSS;     // получение текущих рекордов    getHightScores();     // запуск главной функции игры     init();     function init():void {        play_again_btn.visible=false;        guess_btn.visible=true;         beginMessage="Введите число от 1 до 100.";        message_tf.autoSize=TextFieldAutoSize.CENTER;        message_tf.text=beginMessage;         try_count=10;// количество попыток        try_count_tf.text="У вас осталось "+try_count+" попыток.";         message_tf.restrict="0-9";         input_tf.text="";         // генерация случайного числа        randomNumber=Math.floor(Math.random()*100+1);         guess_btn.addEventListener(MouseEvent.CLICK, yourGuess);    }     function yourGuess(event:MouseEvent):void {        // проверка числа, введенного пользователем        my_guess=uint(input_tf.text);        try_count--;        try_count_tf.text="У вас осталось "+try_count+" попыток.";        if (my_guess>randomNumber) {            message_tf.text="Ваше число, "+my_guess+" слишком большое.";        } else if (my_guess < randomNumber) {            message_tf.text="Ваше число, "+my_guess+" слишком маленькое.";        } else {            message_tf.text="Правильно! Это число "+randomNumber+".";            winGame();        }        if (try_count==0) {            try_count_tf.text="У вас больше нет попыток.";            guess_btn.visible=false;            play_again_btn.visible=true;            guess_btn.removeEventListener(MouseEvent.CLICK, yourGuess);            play_again_btn.addEventListener(MouseEvent.CLICK, guessAgain);        }    }     function winGame():void {        // выигрыш        // очки высчитываются по формуле (оставшееся кол-во попыток)*10        try_count_tf.text="Ваш результат: "+try_count*10+" баллов.";         // отправка рекорда        setHightScores();         guess_btn.visible=false;        play_again_btn.visible=true;        guess_btn.removeEventListener(MouseEvent.CLICK, yourGuess);        play_again_btn.addEventListener(MouseEvent.CLICK, guessAgain);    }     function guessAgain(event:MouseEvent):void {        init();    }     function setHightScores():void {        // функция отправки рекорда на сервер вконтакте        viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;        // содание запроса для отправки рекорда        api=new VkApiNode(viewer_id,api_id,api_secret);        query=api.setUserScore(''+(try_count*10));        url_request=new URLRequest(query);        url_loader=new URLLoader  ;        url_loader.addEventListener(Event.COMPLETE,onLoaded2);        url_loader.load(url_request);    }     function getHightScores():void {        // функция получения рекордов        viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;        api=new VkApiNode(viewer_id,api_id,api_secret);        query=api.getHighScores();        url_request=new URLRequest(query);        url_loader=new URLLoader  ;        url_loader.addEventListener(Event.COMPLETE,onLoaded);        url_loader.load(url_request);    }     function onLoaded(event:Event):void {        if (url_loader.data!=null) {            var externalXML=new XML(url_loader.data);            var topUsers='';            var len=externalXML.score_info.length();            for (var i=0; i<len; i++) {                topUsers=topUsers+externalXML..score[i]+' <a href="http:/vkontakte/id'+externalXML..user_id[i]+'">'+externalXML..user_name[i]+'</a><br />';            }            records_tf.htmlText=topUsers;        } else {            trace("Error!");        }    }     function onLoaded2(event:Event):void {        getHightScores();    }}
 Сервер ВКонтакте отвечает:
Сервер- http://api.vkontakte.ru отвечает:

Код: Выделить всё

<error>     <error_code>4</error_code>     <error_msg>Incorrect signature</error_msg>     <request_params list="true">         <param>             <key>api_id</key>             <value>1928400</value>         </param>         <param>             <key>format</key>             <value>XML</value>         </param>         <param>             <key>method</key>             <value>setUserScore</value>         </param>         <param>             <key>random</key>             <value>5885</value>         </param>         <param>             <key>score</key>             <value>10</value>         </param>         <param>             <key>test_mode</key>             <value>0</value>         </param>         <param>             <key>v</key>             <value>2.0</value>         </param>         <param>             <key>sig</key>             <value>7b7dc6d2356fb721ba6f9abaea629be0</value>         </param>     </request_params> </error>
И

Код: Выделить всё

<error>     <error_code>4</error_code>     <error_msg>Incorrect signature</error_msg>     <request_params list="true">         <param>             <key>api_id</key>             <value>1928400</value>         </param>         <param>             <key>format</key>             <value>XML</value>         </param>         <param>             <key>method</key>             <value>getHighScores</value>         </param>         <param>             <key>random</key>             <value>7310</value>         </param>         <param>             <key>test_mode</key>             <value>0</value>         </param>         <param>             <key>v</key>             <value>2.0</value>         </param>         <param>             <key>sig</key>             <value>cda51a59a993a0b1005d8a1d2e9af85c</value>         </param>     </request_params> </error>
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Александр »

вот это

Код: Выделить всё

viewer_id=LoaderInfo(root.loaderInfo).parameters.viewer_id;
в двух местах заменить на

Код: Выделить всё

viewer_id=wrapper.application.parameters.viewer_id;
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Евгений »

Уаа..Спасибо! ;) Наконец-то...)
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Евгений »

Влад писал(а):Я научился сбрасывать рекорды!!!!
Сбрасывать рекорд пользователя, который играет или всех пользователей?
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Евгений »

Кто умеет перезаписывать рекорд пользователя? Отзовитесь..
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Евгений »

А как выделить красным цветом первых трёх?
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Евгений »

Влад писал(а):Я научился сбрасывать рекорды!!!!
Расскажи, пожалуйста как? :) Заранее благодарю!
Sauron
Сообщения: 105
Зарегистрирован: 25 сен 2010, 14:41

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Sauron »

Как исправить ?
 Фото
Изображение
Изображение
Изображение
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Игра «Угадай число» (getHighScores, setUserScore)

Сообщение Евгений »

Положить файл Main.as рядом с файлом fla ))
Ответить