Простой чат на AS3

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.

Простой чат на AS3

Сообщение Евгений » 24 июн 2010, 18:19

Приступим к созданию чата. Для начала создаем приложение:
Изображение

Теперь запомним некоторые данные, которые мы получили при создании:
Изображение

Теперь открываем adobe Flash и создаем новый Файл Flash(ActionScript3). Нажимаем Ctrl+F7 и из появившегося окна на сцену тащим: Button, TextArea и TextInput. Теперь обзываем Button - btn, TextArea - pole а TextInput - Mess_tf. Нажимаем F9. В окне редактирования ода пишем:
  1. import vk.*;
  2. //импотритуем все что нам надо
  3.  
  4. //все это необходимое есть в архиве с исходником
  5.  
  6. var api_id:Number =1605383;//ID приложения, которое мы получили вначале
  7. var api_secret:String = "IQyfnhjlTc";//Ключ приложения, которое мы получили вначале
  8. var viewer_id:Number;//id пользователя который просматривает приложение
  9. var url_loader1:URLLoader = new URLLoader();//лоадеры
  10. var url_request1:URLRequest = new URLRequest();
  11. var url_loader2:URLLoader = new URLLoader();
  12. var url_request2:URLRequest = new URLRequest();
  13. var url_loader3:URLLoader = new URLLoader();
  14. var url_request3:URLRequest = new URLRequest();
  15. var api:VkApiNode;//создаем переменную класса, каждый вызов к Api буде создаваться ее экземпляр
  16. var query:String;// переменная пути запроса в URL, а данные будут передаваться методом GET
  17. var timer:Timer = new Timer(2500);//таймер, по срабатыванию которого будем обновять поле сообщений 2.5, самое оптималное время, но меняйте как душе угодно
  18. var save:XML=new XML();//XML который хранит сообщения
  19. var VkAvatar:Loader = new Loader();//Лоадер для аватара
  20. var VkAvatarUrl:URLRequest = new URLRequest();//путь аватара
  21. var wrapper:Object;//обьект <<контейнер>>, который загружает в себя приложение
  22.  
  23. this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );//событие произойдет, когда контейнер полностью загрузит приложение
  24.  
  25. function onAddedToStage(e: Event):void {
  26.     Security.allowDomain("*");
  27.     stage.dispatchEvent(new Event(Event.DEACTIVATE));//решение проблемы неработоспособности некоторых элементов
  28.     stage.dispatchEvent(new Event(Event.ACTIVATE));
  29.     wrapper = Object(this.parent.parent);//определяем контейнер
  30.     viewer_id = wrapper.application.parameters.viewer_id;//передаем переменной знчение id просматривающего приложение
  31.     timer.start();//запускаем таймер
  32.  
  33.     stage.addEventListener(Event.ENTER_FRAME, Emess);//добавляем слушатели
  34.     btn.addEventListener(MouseEvent.CLICK, onMessGo);
  35.     timer.addEventListener(TimerEvent.TIMER, onGetMess);
  36.     Mes_tf.addEventListener(KeyboardEvent.KEY_DOWN, onMessOtpr);
  37.  
  38.     api=new VkApiNode(viewer_id,api_id,api_secret);//загружаем профиль пользователя и самый маленький аватар(photo_medium и photo_big большее размеры), который просматривает приложение
  39.     query=api.getProfiles([viewer_id], ['photo']);
  40.     url_request3=new URLRequest(query);
  41.     url_loader3=new URLLoader;
  42.     url_loader3.addEventListener(Event.COMPLETE, EComplet2);//событие произойдет когда профиль загрузится
  43.     url_loader3.load(url_request3);
  44. }
  45.  
  46. function EComplet2(e:Event):void
  47. {
  48.     var XmlO:XML = new XML(url_loader3.data);//создаем переменную хранящую профиль
  49.     VkAvatarUrl = new URLRequest(XmlO.children()[0].photo);//загружаем аватар
  50.     VkAvatar.load(VkAvatarUrl);
  51.     VkAvatar.contentLoaderInfo.addEventListener(Event.COMPLETE, onVkAvatar);//событие произойдет когда аватар загрузится
  52. }
  53. function onVkAvatar(e:Event):void
  54. {
  55.     VkAvatar.x = 2;
  56.     VkAvatar.y = 2;
  57.     addChild(VkAvatar);//добавляем на сцену аватар
  58. }
  59. function onMessOtpr(e:KeyboardEvent):void
  60. {
  61.     if(e.keyCode == 13)//если пользавеиель нажал клавишу Enter
  62.     {
  63.         if(Mes_tf.text !== "")//если пое для ввода сообщений не пустое
  64.         {
  65.             api=new VkApiNode(viewer_id,api_id,api_secret);//деаем запрос и ставим сообщение в очередь
  66.               query=api.sendMessage(Mes_tf.text);
  67.             url_request1=new URLRequest(query);
  68.                url_loader1=new URLLoader;
  69.                url_loader1.load(url_request1);
  70.             Mes_tf.text = "";
  71.         }
  72.     }
  73. }
  74.  
  75. function Emess(e:Event):void
  76. {
  77.     if(Mes_tf.text == "")//если поле пустое на кнопку нажать нельзя
  78.     {
  79.         btn.enabled = false;
  80.     }else{//если нет то можно
  81.         btn.enabled = true;
  82.     }
  83. }
  84. function onMessGo(e:MouseEvent):void
  85. {
  86.     api=new VkApiNode(viewer_id,api_id,api_secret);//деаем запрос и ставим сообщение в очередь
  87.     query=api.sendMessage(Mes_tf.text);
  88.     url_request1=new URLRequest(query);
  89.     url_loader1=new URLLoader;
  90.     url_loader1.load(url_request1);
  91.     Mes_tf.text = "";
  92. }
  93. function onGetMess(e:TimerEvent):void
  94. {
  95.     api=new VkApiNode(viewer_id,api_id,api_secret);//загружаем очередь сообщений
  96.     query=api.getMessages();
  97.     url_request2=new URLRequest(query);
  98.     url_loader2=new URLLoader;
  99.     url_loader2.addEventListener(Event.COMPLETE, EComplet);
  100.     url_loader2.load(url_request2);
  101. }
  102. function EComplet(e:Event):void {
  103.     if(XML(url_loader2.data).message_info !== null)//если в очереди хоть что-то есть
  104.     {
  105.         save = new XML(url_loader2.data);//передаем XML полученные данные
  106.         for(var i:int=0; i<save.length(); i++)//запускаем цикл
  107.         {
  108.             if(save.children()[i].user_id == viewer_id)//если данное сообщение отправленно пользователем, который просматривает приложение
  109.             {
  110.                 pole.htmlText += '<b><font color="#ff0000">' + save.children()[i].user_name + "</font></b>: " + save.children()[i].message;//добавляем строку с его именем и сообщением без ссылки и красного цвета
  111.             }else{//если это отправил другой пользователь
  112.                 pole.htmlText += '<b><font color="#000080"><a href="http://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку синего цвета
  113.             }
  114.         }
  115.     }
  116. }

Нажимам Ctrl + Enter и если ошибок компиляции небыло, а приложение не работает, то значит все правильно. Заходим в контакт и переходим к нашему, ране созданному, приложению. Заходим в настройки и загружаем SWF:
Изображение

На всякий случай проверяем настройки:

Приложение включено и видно всем

С использованием контейнера(Можно и Без отступов и элементов управления)

Можно добавлять на страницу

Тип приложения Flash



Исходник: http://easyflash.org/engine/download.php?id=428

Это был самый пример самого простого чата. Я даже не исползоват time сообщений. Вы можете изменить его как душе угодно и вставить в свое приложение. Но даже не пытайтесть создать обычный чат и отправить его на проверку.

Взято отсюда: http://easyflash.org/flashlearn/flatext ... vkapi.html

За это сообщение автора Евгений поблагодарили - 5:
acpid, catamount5, Noise Gate, VIP, wolflex4
Аватара пользователя
Евгений
FL Team
FL Team
 
Автор темы
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01
Откуда: Новосибирск
Благодарил (а): 65 раз.
Поблагодарили: 35 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Простой чат на AS3

Сообщение Deniska » 24 июн 2010, 19:08

Работает кстати ток с контейнером- проверял где-то 3 недели назад

За это сообщение автора Deniska поблагодарил:
VIP
Аватара пользователя
Deniska

 
Сообщения: 654
Зарегистрирован: 30 окт 2009, 00:07
Благодарил (а): 15 раз.
Поблагодарили: 48 раз.

Re: Простой чат на AS3

Сообщение Влад » 24 июн 2010, 19:10

эх старый добрый чат, проверил всё отлично работает
https://hrefs.ru - сервис крауд маркетинга №1 в 2019 году

За это сообщение автора Влад поблагодарил:
VIP
Аватара пользователя
Влад
Модератор
Модератор
 
Сообщения: 654
Зарегистрирован: 29 апр 2010, 22:24
Благодарил (а): 26 раз.
Поблагодарили: 58 раз.

Re: Простой чат на AS3

Сообщение 112 » 25 июн 2010, 21:47

блин зачем темы с изифлэша копирывать?!
Если ты дебил ,оставайся им!
Я бы изменил мир,но Бог не дает исходники!
Изображение

За это сообщение автора 112 поблагодарили - 2:
Sasha, VIP
Аватара пользователя
112
Модератор
Модератор
 
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53
Благодарил (а): 51 раз.
Поблагодарили: 80 раз.

Re: Простой чат на AS3

Сообщение Alan_Wake » 25 июн 2010, 23:45

Вопрос появился, только начал осваивать это дело..:
Как задать местоположение аватара? Это где-то здесь, как я понимаю
  1. private function onLoaded(e:Event):void {
  2.             // отображаем загруженный аватар
  3.             photoLoader.x = (540-photoLoader.width)/2;
  4.             photoLoader.y = (400-photoLoader.height)/2;
  5.             addChild(photoLoader);
  6.         }
  7.  


Х и Y, да ? Можете объяснить? Или направьте туда, где можно прочесть об этом.

За это сообщение автора Alan_Wake поблагодарил:
VIP
Alan_Wake

 
Сообщения: 3
Зарегистрирован: 25 июн 2010, 19:49
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.

Re: Простой чат на AS3

Сообщение Alan_Wake » 26 июн 2010, 00:42

Ох, какой же я глупый, поискав я все же разобрался что вообще не туда залез x_X
Вот же оно :
  1. function onVkAvatar(e:Event):void
  2. {
  3.     VkAvatar.x = 2;
  4.     VkAvatar.y = 2;
  5.     addChild(VkAvatar);//добавляем на сцену аватар
  6. }

За это сообщение автора Alan_Wake поблагодарил:
VIP
Alan_Wake

 
Сообщения: 3
Зарегистрирован: 25 июн 2010, 19:49
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.

Re: Простой чат на AS3

Сообщение lewka151 » 26 июн 2010, 22:48

отсюда мой урок скопировал http://easyflash.org/flashlearn/flatexttutorials/857-4at_vkapi.html
 Атака шариков
Аватара пользователя
lewka151

 
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01
Откуда: http://vkontakte.ru/id20138940
Благодарил (а): 6 раз.
Поблагодарили: 8 раз.

Re: Простой чат на AS3

Сообщение 112 » 26 июн 2010, 23:44

я уже это писал...
и как тебе ЕВГЕНИИ не стыдно?!
Если ты дебил ,оставайся им!
Я бы изменил мир,но Бог не дает исходники!
Изображение
Аватара пользователя
112
Модератор
Модератор
 
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53
Благодарил (а): 51 раз.
Поблагодарили: 80 раз.

Re: Простой чат на AS3

Сообщение Alex » 03 июл 2010, 13:21

в этом уроке ошибка чат не будет правильно работать.
в строке 106 нужно заменить на
Мои приложения:
http://vkontakte.ru/app1890949 Поедалка :)))
Alex

 
Сообщения: 29
Зарегистрирован: 19 апр 2010, 21:05
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Простой чат на AS3

Сообщение alessandro » 07 июл 2010, 17:19

Alex писал(а):в этом уроке ошибка чат не будет правильно работать.
в строке 106 нужно заменить на



А что изменит эта поправка?
alessandro

 
Сообщения: 6
Зарегистрирован: 23 июн 2010, 10:36
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Неактуальные уроки (API 2.0 и устаревшие методы)



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron