Приложение, показывающее имя, фамилию, дату рождения, аватар

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение 112 »

moto
я бы на твоем вместе сделал этот код в кадре и засунул его в тот кадр в который нужно
moto
Сообщения: 122
Зарегистрирован: 05 апр 2010, 23:08

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение moto »

спасибо, я думал точно так же) теперь убедился)

вот есть у меня фла - файл,
к нему присоединен as файл со следующим кодом:

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

package 
{
  import flash.display.Sprite;
  import flash.display.Stage;
  import flash.events.Event;
  import flash.events.MouseEvent;
  import flash.system.Security;
  import flash.text.TextField;
  import vk.*;

	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;

  public class rico extends Sprite 
  {
    private var wrapper:* = null;
    private var menu_item1:* = null;
    private var menu_item2:* = null;
    private var menu_item3:* = null;
    private var menu_item4:* = null;
    private var menu_item5:* = null;
	private var menu_item6:* = null;
	
    private var last_y_1:uint = 290;
    private var last_y_2:uint = 330;
    private var last_y_4:uint = 300;
    private var last_y_5:uint = 330;
    private var box1:* = null;
    private var box2:* = null;
	
		private var api_id:Number=743131; // id вашего приложения
		private var api_secret:String="sE4VLBDdSQ"; // секретный ключ
		private var externalXML:XML;
		private var loader:URLLoader = new URLLoader();
		private var photoLoader:Loader = new Loader();
		private var viewer_id:Number;
		private var sig:String;
		private var uid:String;
		private var bdate_txt:TextField = new TextField();
		private var name_txt:TextField = new TextField();
		private var univer_txt:TextField = new TextField();
		


    public function rico():void 
    {
      if (stage) init();
      else addEventListener(Event.ADDED_TO_STAGE, init);
//======================
			var params:Object=LoaderInfo(root.loaderInfo).parameters;
			viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
			getProfile(viewer_id);
    }
		private function getProfile(uid):void {
			sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);
			var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=bdate,photo_big&v=2.0&sig="+sig);
			loader.load(request);
			loader.addEventListener(Event.COMPLETE, onComplete);
		}
private function onComplete(event:Event):void {
			bdate_txt.text='';
			if (loader!=null) {
				externalXML=new XML(loader.data);
				var bdate = externalXML..bdate;
				bdate_txt.text=bdate;
				bdate_txt.x=430;
				bdate_txt.y=10;
				//addChild(bdate_txt);
				
				var uname = externalXML..first_name + ' ' + externalXML..last_name;
				name_txt.text=uname;
				name_txt.x=300;
				name_txt.y=10;
				//addChild(name_txt);
				
				var univerx = externalXML..university_name;
				univer_txt.text=univerx;
				univer_txt.x=430;
				univer_txt.y=210;
				
				var photo = externalXML..photo_big;
				var request2:URLRequest=new URLRequest(photo);
				photoLoader.load(request2);
				photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);

			} else {
				trace("Error!");
			}
		}

		private function onLoaded(e:Event):void {
			photoLoader.x = 10;
			photoLoader.y = 10;
			//addChild(photoLoader);
		}
	
    private function init(e:Event = null):void 
    {
      removeEventListener(Event.ADDED_TO_STAGE, init);

      Security.allowDomain( "*" );
      VK.init( this, "http://api.vkontakte.ru/swf/vk_gui-0.5.swf" );
      //VK.init( this, "../../../bin/vk_gui-0.5.swf" );
    }
	

    public function onVKLoaded():void
    {
      var i:uint;
      
      wrapper = Object(parent.parent);
      if ( wrapper.external == null )
        wrapper = stage; // Local
      
	  
      // A background for entire application
   //   var bg:Sprite = new Sprite();
   //   VK.Utils.fillRect( bg, 0, 132, 627, 4050, VK.Utils.BK_COL );
   //   addChild( bg );
      
      // Main menu with three items (and three associated pages)
      // Associated pages are accessible as:  main_menu.page( idx )
      var main_menu:* = VK.createMainMenu( wrapper );
      menu_item1 = main_menu.addItem( "вкладка номер один", "loc1" );
      menu_item2 = main_menu.addItem( "вкладка номер два", "loc2" );
      menu_item3 = main_menu.addItem( "вкладка номер три", "loc3" );
      menu_item4 = main_menu.addItem( "вкладка номер четыре", "loc4" );
      menu_item5 = main_menu.addItem( "вкладка номер пять", "loc5" );
      menu_item6 = main_menu.addItem( "вкладка номер шесть", "loc6" );
	  main_menu.y +=70;
      addChild( main_menu );
      
   //   main_menu.addEventListener( Event.CHANGE, onMenuNavigate );
	  //----------------------выбор активной вкладки-------------
      main_menu.selectedItem = menu_item1;
      //menu_item2.label = "новое имя вкладки";
      
      
      // -----------------------------------------------------------------------------------
      // --- Первая вкладочка ---
  menu_item1.panel.addChild( bdate_txt);    
  menu_item1.panel.addChild( name_txt);
  menu_item1.panel.addChild( photoLoader);
  menu_item1.panel.addChild( univer_txt);
  

	  

	
        }

    
  }
  
}
в папке с файлом есть папка vk в которой VK.as со следующим содержимым:

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

package vk
{
  import flash.display.Loader;
  import flash.net.URLRequest;
  import flash.events.Event;
  import flash.events.IOErrorEvent;
  import flash.system.LoaderContext;
  import flash.system.ApplicationDomain;
  

  public class VK
  {
    public static var MainMenu:Class = null;
    public static var RoundButton:* = null;
    public static var SquareButton:* = null;
    public static var LinkButton:* = null;
    public static var LightButton:* = null;
    public static var ComboBox:* = null;
    public static var ListBox:* = null;
    public static var Box:* = null;
    public static var CheckBox:* = null;
    public static var RadioButtonsGroup:* = null;
    public static var Pagination:* = null;
    public static var InputField:* = null;
    public static var ScrollBar:* = null;
    public static var Utils:* = null;

    public static const LINK_BUTTON:uint = 0;
    public static const BLUE_BUTTON:uint = 1;
    public static const GRAY_BUTTON:uint = 2;

    // ------------------------------------------------------------------------------ Call this before use of VK library.
    public static function init( obj:*, url:String ):void
    {
      var loader:Loader = new Loader();
      loader.contentLoaderInfo.addEventListener( Event.COMPLETE, function(e:Event):void
      {
        Utils        = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.Utils" ) as Class;
        RoundButton  = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.RoundButton" ) as Class;
        SquareButton = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.SquareButton" ) as Class;
        LinkButton   = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.LinkButton" ) as Class;
        LightButton  = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.LightButton" ) as Class;
        ComboBox     = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.ComboBox" ) as Class;
        ListBox      = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.ListBox" ) as Class;
        Box          = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.Box" ) as Class;
        CheckBox     = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.CheckBox" ) as Class;
        RadioButtonsGroup = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.RadioButtonsGroup" ) as Class;
        MainMenu     = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.MainMenu" ) as Class;
        Pagination   = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.Pagination" ) as Class;
        InputField   = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.InputField" ) as Class;
        ScrollBar    = loader.contentLoaderInfo.applicationDomain.getDefinition( "vk.gui.ScrollBar" ) as Class;
        
        obj.onVKLoaded();
      } );
      
      loader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, function(e:IOErrorEvent):void
      {
        //trace( e.toString() );
      }, false, 0, true );
      
      loader.load( new URLRequest( url ), new LoaderContext( false, ApplicationDomain.currentDomain ) );
    }
    
    // ------------------------------------------------------------------------------ Creation wrappers.

    public static function createMainMenu( wrapper:*, lazyMode:Boolean = false ):*
    {
MainMenu.STAGE_WIDTH = 807;

      return new MainMenu( wrapper, lazyMode );
    }
    
    public static function createRoundButton( label:String, x:int, y:int, type:uint = 1 ):*
    {
      return new RoundButton( label, x, y, type );
    }
    
    public static function createSquareButton( label:String, x:int, y:int, type:uint = 1 ):*
    {
      return new SquareButton( label, x, y, type );
    }
    
    public static function createLinkButton( label:String, x:int, y:int, font_size:uint = 11, width:uint = 0, height:uint = 0 ):*
    {
      return new LinkButton( label, x, y, font_size, width, height );
    }
    
    public static function createLightButton( label:String, x:int, y:int, width:uint,
			color:int, active_color:int, text_color:uint, active_text_color:uint, 
			align:uint = 0, font_size:uint = 11, margins:uint = 4 ):*
    {
      return new LightButton( label, x, y, width, color, active_color, text_color, active_text_color, align, font_size, margins );
    }
    
    public static function createComboBox( wrapper:*, x:int, y:int, width:uint ):*
    {
      return new ComboBox( wrapper, x, y, width );
    }
  
    public static function createListBox( x:int, y:int, width:uint ):*
    {
      return new ListBox( x, y, width );
    }
  
    public static function createBox( title:String, content:*, y:int, width:uint, buttons:Array ):*
    {
      return new Box( title, content, y, width, buttons );
    }
  
    public static function createCheckBox( title:String, x:int, y:int ):*
    {
      return new CheckBox( title, x, y );
    }
    
    public static function createRadioButtonsGroup( x:int, y:int ):*
    {
      return new RadioButtonsGroup( x, y );
    }
    
    public static function createPagination( totalCount:uint, x:uint, y:uint, height:uint = 0, type:uint = 0, pagesVisible:uint = 2, elemsOnPage:uint = 10 ):*
    {
      return new Pagination( totalCount, x, y, height, type, pagesVisible, elemsOnPage );
    }
    
    public static function createInputField( x:uint, y:uint, width:uint, linesCount:uint = 1, editable:Boolean = true, border:Boolean = true ):*
    {
      return new InputField( x, y, width, linesCount, editable, border );
    }

    public static function createScrollBar( x:int, y:int, height:int ):*
    {
      return new ScrollBar( x, y, height );
    }

    public static function addText( s:String, x:int, y:int, text_color:uint = 0, text_format:uint = 0x0010, width:uint = 0, height:uint = 0, font_size:uint = 11 ):*
    {
      return Utils.addText( x, y, width, font_size, s, text_color, text_format, height );
    }
  }
}
as - файл, который присоединен к фла - файлу, я отсоединил, скопировал содержимое в нужный кадр и убрал все что касается классов(то что получилось выкладывать не буду, потому как не пашет)
в итоге , компиляция прошла без ошибок, однако моя затея не увенчалась успехом... на экране появился белоснежный квадрат swf - файла... :(

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

заранее огромное спасибо!
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение 112 »

на не забудь заменит ид и секрет на свой и кинь в папку сприлож md5

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

       var api_id:Number=1843765; // id вашего приложения
       var api_secret:String="bA7qa12Oh"; // секретный ключ
       var externalXML:XML;
       var loader:URLLoader = new URLLoader();
       var photoLoader:Loader = new Loader();
       var viewer_id:Number;
       var sig:String;
       var uid:String;
       var bdate_txt:TextField = new TextField();
       var name_txt:TextField = new TextField();

       function Main():void {
         // узнаём id пользователя, который просматривает приложение
         var params:Object=LoaderInfo(root.loaderInfo).parameters;
         viewer_id = (params['viewer_id']) ? parseInt(params['viewer_id']) : 1;
         // получаем профиль этого пользователя
         getProfile(viewer_id);
      }

       function getProfile(uid):void { // функция получения профиля
         sig=MD5.encrypt(viewer_id+'api_id='+api_id+'fields=bdate,photo_bigmethod=getProfilesuids='+uid+'v=2.0'+api_secret);
         var request:URLRequest=new URLRequest("http://api.vkontakte.ru/api.php?api_id="+api_id+"&method=getProfiles&uids="+uid+"&fields=bdate,photo_big&v=2.0&sig="+sig);
         loader.load(request);
         loader.addEventListener(Event.COMPLETE, onComplete);
      }

       function onComplete(event:Event):void { // функция выполняется когда профиль был загружен
         bdate_txt.text='';
         if (loader!=null) {
            externalXML=new XML(loader.data);
            // отображаем дату рождения
            var bdate = externalXML..bdate;
            bdate_txt.text=bdate;
            bdate_txt.x=490;
            bdate_txt.y=380;
            addChild(bdate_txt);
            
            // отображаем имя и фамилию
            var uname = externalXML..first_name + ' ' + externalXML..last_name;
            name_txt.text=uname;
            name_txt.x=410;
            name_txt.y=360;
            addChild(name_txt);
            
            // загружаем аватар
            var photo = externalXML..photo_big;
            var request2:URLRequest=new URLRequest(photo);
            photoLoader.load(request2);
            photoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);

         } else {
            trace("Error!");
         }
      }

       function onLoaded(e:Event):void {
         // отображаем загруженный аватар
         photoLoader.x = (550-photoLoader.width)/2;
         photoLoader.y = (400-photoLoader.height)/2;
         addChild(photoLoader);
      }

Main() 
moto
Сообщения: 122
Зарегистрирован: 05 апр 2010, 23:08

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение moto »

откуда этот код?
тут только часть моего кода... в этом и проблема..
Alex
Сообщения: 29
Зарегистрирован: 19 апр 2010, 21:05

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение Alex »

А как размер Аватара изменить ?
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение bodnar »

запрашивать photo_big либо photo_medium либо photo
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

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

bodnar писал(а):запрашивать photo_big либо photo_medium либо photo
и если надо, то совместить с этим http://flapps.ru/forum/topic3-80.html#p2367
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение bodnar »

кстати о птичках. фотки то теперь все квадратные? в редактировании страницы разрешают выбрать квадратную область которая будет показываться на миниатюрах... только заметил :)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

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

bodnar
После обновления аватарки фотки становятся квадратными, но у тех кто не обновлял - такие же как и были раньше.
Alex
Сообщения: 29
Зарегистрирован: 19 апр 2010, 21:05

Re: Приложение, показывающее имя, фамилию, дату рождения, аватар

Сообщение Alex »

photoLoader.width = 50; // ширина
photoLoader.height = 100; // высота

данный код не работает. Когда его добавляешь перестают фотки отображаться
Ответить