Сохранить и вывести аватарки пользователей в цикле

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)

Сохранить и вывести аватарки пользователей в цикле

Сообщение herotic » 18 ноя 2010, 14:02

Приветствую всех. Скажите, пожалуйста, возможно ли сделать с помощью вконтакте АПИ следующую штуку: Пользователь зашел в приложение и его userid отправилось в мускул, после некоторого промежутка времени в приложении побывало еще 20 пользователей и их данные тоже отправились в базу данных. Возможно ли вывести в цикле аватарки всех пользователей кто заходил в приложении? Если да, то как?
herotic

 
Автор темы
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

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

Google
 



Re: Сохранить и вывести аватарки пользователей в цикле

Сообщение Александр » 19 ноя 2010, 00:27

Создание базы пользователей приложения и ведение статистики - записать в базу id всех заходивших.
Вывод данных из базы (PHP + MySQL) - выбираешь id.
Метод getProfiles - по id получаешь аватарки.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Сохранить и вывести аватарки пользователей в цикле

Сообщение herotic » 19 ноя 2010, 08:09

Спасибо, так и делаю, но есть проблема с передачей координат аватаркам, чтобы они отображались в тех местах, где нажал(и) пользователи, не могу понять как передать правильно переменные:
PHP отлично отправляет и принимает данные.

  1.  
  2.  
  3. import flash.display.Sprite;
  4.  
  5.        var api_id:Number=2020012; // id вашего приложения
  6.        var api_secret:String="0YCY9Palqm"; // секретный ключ
  7.        var externalXML:XML;
  8.        var loader:URLLoader = new URLLoader();
  9.        var photoLoader:Loader = new Loader();
  10.        var viewer_id:Number;
  11.        var url_loader:URLLoader=new URLLoader;
  12.        var url_request:URLRequest=new URLRequest();
  13.        var chel = new Sprite();
  14.        var userid:Number;
  15.        var koordx:Number;
  16.        var koordy:Number;
  17.        var postavil:Number;
  18.        var my_point:XMLList;
  19.        var my_total:Number;
  20.        var sig:String;
  21.        var uid:String;
  22.        
  23.        var globalkoordx:Number=0;
  24.        var globalkoordy:Number=0;
  25.        
  26.        var name_txt:TextField = new TextField();
  27.  
  28.        function Main():void {
  29.          // узнаём id пользователя, который просматривает приложение
  30.          var params:Object=LoaderInfo(root.loaderInfo).parameters;
  31.          viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
  32.          // получаем профиль этого пользователя
  33.          getProfile(viewer_id);
  34.          stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);
  35.          stage.addEventListener(MouseEvent.CLICK, ClickOnStage);
  36.          Mouse.hide();
  37.          
  38.        
  39.          var myXMLLoader:URLLoader = new URLLoader();
  40.          myXMLLoader.load(new URLRequest("points_to_stage.php"));
  41.          myXMLLoader.addEventListener(Event.COMPLETE, processXML);
  42.          
  43.       }
  44.      
  45.      
  46.       function processXML (e:Event):void{
  47.         var myXML:XML = new XML(e.target.data);
  48.        
  49.         my_point = myXML.POINT;
  50.         my_total = my_point.length();
  51.        
  52.         for(var i: int = 0; i < my_point.length(); i++)
  53.         {
  54.             var koordx: String = my_point[i].@KOORDX;
  55.             var koordy: String = my_point[i].@KOORDY;
  56.             var userid: String = my_point[i].@USERID;
  57.             chel.graphics.beginFill(0xFFFFFF);
  58.             chel.graphics.drawRect(koordx,koordy,10,10);
  59.             chel.graphics.endFill();
  60.             addChild(chel);
  61.             globalkoordx = Number(koordx);
  62.             globalkoordy = Number(koordy);
  63.             getProfileforPoints(userid);
  64.         }
  65.         }
  66.      
  67.      
  68.      
  69.       //профил точки
  70.       function getProfileforPoints(uid):void { // функция получения профиля
  71.          sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=photomethod=getProfilesuids='+uid+'v=2.0'+api_secret);
  72.          var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=photo&v=2.0&sig="+sig);
  73.          loader.load(request);
  74.          loader.addEventListener(Event.COMPLETE, onCompleteforPoints);
  75.       }
  76.      
  77.        function onCompleteforPoints(event:Event):void { // функция выполняется когда профиль был загружен
  78.          if (loader!=null) {
  79.             externalXML=new XML(loader.data);        
  80.             // загружаем аватар точки
  81.             var photo = externalXML..photo;
  82.             var request2:URLRequest=new URLRequest(photo);
  83.             photoLoader.load(request2);
  84.             photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedforPoints);
  85.  
  86.          } else {
  87.             trace("Error!");
  88.          }
  89.       }
  90.      
  91.        function onLoadedforPoints(e:Event):void {
  92.          // отображаем загруженный аватар
  93.          photoLoader.x = globalkoordx;
  94.          photoLoader.y = globalkoordy;
  95.          addChild(photoLoader);
  96.       }
  97.      
  98.      
  99.  
  100.        function getProfile(uid):void { // функция получения профиля
  101.          sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=photomethod=getProfilesuids='+uid+'v=2.0'+api_secret);
  102.          var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=photo&v=2.0&sig="+sig);
  103.          loader.load(request);
  104.          loader.addEventListener(Event.COMPLETE, onComplete);
  105.       }
  106.  
  107.        function onComplete(event:Event):void { // функция выполняется когда профиль был загружен
  108.          if (loader!=null) {
  109.             externalXML=new XML(loader.data);        
  110.          } else {
  111.             trace("Error!");
  112.          }
  113.       }
  114.  
  115.        function onLoaded(e:Event):void {
  116.       }
  117.      
  118.       function redrawCursor(event:MouseEvent):void
  119.     {
  120.       cursor_mc.x = event.stageX;;
  121.       cursor_mc.y = event.stageY;
  122.     }
  123.    
  124.     function ClickOnStage(event:MouseEvent):void
  125.             {
  126.                 if (cursor_mc.x < 533 && postavil != 1)
  127.                 {
  128.                 chel.graphics.beginFill(0xFFFFFF);
  129.                 chel.graphics.drawRect(cursor_mc.x,cursor_mc.y,10,10);
  130.                 chel.graphics.endFill();
  131.                 addChild(chel);
  132.                
  133.                 postavil = 1;
  134.            
  135.                 var variables:URLVariables = new URLVariables();
  136.                 url_request = new URLRequest("add_point.php");
  137.                 url_request.method = URLRequestMethod.POST;
  138.                 variables['userid'] = viewer_id;
  139.                 variables['koordx'] = cursor_mc.x;
  140.                 variables['koordy'] = cursor_mc.y;
  141.                 url_request.data = variables;
  142.                 url_loader = new URLLoader;
  143.                 url_loader.load(url_request);
  144.                 }
  145.                
  146.                 if (cursor_mc.x > 533 && postavil == 1)
  147.                 {
  148.                 }
  149.             }
  150.  
  151. Main()
  152.  


Подскажите, пожалуйста, где трабл? Оно вроде и работает, даже первый цикл выполняется правильно, а следующие уже все, не пашет.
herotic

 
Автор темы
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: Сохранить и вывести аватарки пользователей в цикле

Сообщение butuz » 19 ноя 2010, 08:32

globalkoordx = Number(koordx);
globalkoordy = Number(koordy);
getProfileforPoints(userid);

здесь трабл, цикл пробегает быстрее, чем апи получает фотки.
пиши координаты в массив, и здесь:

photoLoader.x = globalkoordx;
photoLoader.y = globalkoordy;

подставляй соответствующие координаты из массива
butuz

 
Сообщения: 58
Зарегистрирован: 29 июл 2010, 10:43
Благодарил (а): 7 раз.
Поблагодарили: 10 раз.

Re: Сохранить и вывести аватарки пользователей в цикле

Сообщение herotic » 19 ноя 2010, 16:21

Я хотел сделать немного по другому, но не получилось, судя по всему потому, что не получается передать userid.
При наведении на квадратики необходимо чтобы показывалась аватарка пользователя, но показывает последнее значение userid. Как сделать, чтобы можно было передавать значение переменной userid?
Я попытался сделать так(проблемные участки выделил красным цветом для удобства):
  1.  
  2.  
  3. import flash.display.Sprite;
  4.  
  5.        var api_id:Number=2020012; // id вашего приложения
  6.        var api_secret:String="0YCY9Palqm"; // секретный ключ
  7.        var externalXML:XML;
  8.        var loader:URLLoader = new URLLoader();
  9.        var photoLoader:Loader = new Loader();
  10.        var viewer_id:Number;
  11.        var url_loader:URLLoader=new URLLoader;
  12.        var url_request:URLRequest=new URLRequest();
  13.        var chel = new MovieClip();
  14.        var userid:Number;
  15.        var koordx:Number;
  16.        var koordy:Number;
  17.        var postavil:Number;
  18.        var my_point:XMLList;
  19.        var my_total:Number;
  20.        var sig:String;
  21.        var uid:String;
  22.        var name_txt:TextField = new TextField();
  23.  
  24.        function Main():void {
  25.          // узнаём id пользователя, который просматривает приложение
  26.          var params:Object=LoaderInfo(root.loaderInfo).parameters;
  27.          viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
  28.          // получаем профиль этого пользователя
  29.          getProfile(viewer_id);
  30.          stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);
  31.          stage.addEventListener(MouseEvent.CLICK, ClickOnStage);
  32.          chel.addEventListener(MouseEvent.ROLL_OVER,RollOverPoint)
  33.          Mouse.hide();
  34.          
  35.          //тырим инфу
  36.          var myXMLLoader:URLLoader = new URLLoader();
  37.          myXMLLoader.load(new URLRequest("points.php"));
  38.          myXMLLoader.addEventListener(Event.COMPLETE, processXML);
  39.       }
  40.      
  41.      
  42.       function processXML (e:Event):void{
  43.         var myXML:XML = new XML(e.target.data);
  44.        
  45.         my_point = myXML.POINT;
  46.         my_total = my_point.length();
  47.        
  48.         for(var i: int = 0; i < my_point.length(); i++)
  49.         {
  50.             var koordx: String = my_point[i].@KOORDX;
  51.             var koordy: String = my_point[i].@KOORDY;
  52.             var userid: String = my_point[i].@USERID;
  53.             chel.graphics.beginFill(0xFFFFFF);
  54.             chel.graphics.drawRect(koordx,koordy,10,10);
  55.             chel.graphics.endFill();
  56.             addChild(chel).name = userid; // предполагаю, что так можно идентифицировать addChild
  57.         }
  58.         }
  59.      
  60.      
  61.  
  62.       //профиль точки
  63.       function getProfileforPoints(uid):void { // функция получения профиля точки
  64.          sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=photomethod=getProfilesuids='+uid+'v=2.0'+api_secret);
  65.          var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=photo&v=2.0&sig="+sig);
  66.          loader.load(request);
  67.          loader.addEventListener(Event.COMPLETE, onCompleteforPoints);
  68.       }
  69.      
  70.        function onCompleteforPoints(event:Event):void { // функция выполняется когда профиль точки был загружен
  71.          if (loader!=null) {
  72.             externalXML=new XML(loader.data);        
  73.             // загружаем аватар точки
  74.             var photo = externalXML..photo;
  75.             var request2:URLRequest=new URLRequest(photo);
  76.             photoLoader.load(request2);
  77.             photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedforPoints);
  78.  
  79.          } else {
  80.             trace("Error!");
  81.          }
  82.       }
  83.      
  84.          //вывод фотки точки
  85.        function onLoadedforPoints(e:Event):void {
  86.          photoLoader.x = 100;
  87.          photoLoader.y = 100;
  88.          addChild(photoLoader);
  89.       }
  90.      
  91.      
  92.  
  93.        function getProfile(uid):void { // функция получения профиля
  94.          sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=photomethod=getProfilesuids='+uid+'v=2.0'+api_secret);
  95.          var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=photo&v=2.0&sig="+sig);
  96.          loader.load(request);
  97.          loader.addEventListener(Event.COMPLETE, onComplete);
  98.       }
  99.  
  100.        function onComplete(event:Event):void { // функция выполняется когда профиль был загружен
  101.          if (loader!=null) {
  102.             externalXML=new XML(loader.data);        
  103.          } else {
  104.             trace("Error!");
  105.          }
  106.       }
  107.  
  108.        function onLoaded(e:Event):void {
  109.       }
  110.      
  111.       function redrawCursor(event:MouseEvent):void
  112.     {
  113.       cursor_mc.x = event.stageX;
  114.       cursor_mc.y = event.stageY;
  115.     }
  116.    
  117.           // при наведении на точку показываем фотку точки, но показывается последняя фотка всех точек
  118.           function RollOverPoint(event:MouseEvent):void
  119.     {
  120.       userid = Number(this.addChild(chel).name);
  121.       getProfileforPoints(userid);
  122.     }
  123.    
  124.    
  125.     function ClickOnStage(event:MouseEvent):void
  126.             {
  127.                 if (cursor_mc.x < 533 && postavil != 1)
  128.                 {
  129.                 chel.graphics.beginFill(0xFFFFFF);
  130.                 chel.graphics.drawRect(cursor_mc.x,cursor_mc.y,10,10);
  131.                 chel.graphics.endFill();
  132.                 addChild(chel);
  133.                
  134.                 postavil = 1;
  135.            
  136.                 var variables:URLVariables = new URLVariables();
  137.                 url_request = new URLRequest("add_points.php");
  138.                 url_request.method = URLRequestMethod.POST;
  139.                 variables['userid'] = viewer_id;
  140.                 variables['koordx'] = cursor_mc.x;
  141.                 variables['koordy'] = cursor_mc.y;
  142.                 url_request.data = variables;
  143.                 url_loader = new URLLoader;
  144.                 url_loader.load(url_request);
  145.                 }
  146.                
  147.                 if (cursor_mc.x > 533 && postavil == 1)
  148.                 {
  149.                 }
  150.             }  
  151.  
  152. Main()
  153.  
  154.  
herotic

 
Автор темы
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.


Вернуться в Создание Flash-приложений ВКонтакте



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

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

cron