Вопрос по WallPost, Фото на стену Вконтакте

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

Вопрос по WallPost, Фото на стену Вконтакте

Сообщение raven009 » 15 фев 2010, 12:11

Уважаемые пользователи. Вопрос для тех кто сталкивался в методами API ВКонтакте по wall_post.

Подскажите как можно в приложении по загрузке фото на стену пользователя сделать чтоб когда приложение запускаешь со стены появлялась не кнопка "Browse image", а фото с альбома?

Пример приложения с открытым исходным кодом: Wall publishing example
Желаю учиться, но не могу разобраться (В методах APIВкотакте) (с) id14550770
 Дизайнер приложений ВКонтакте
Создаю только стиль и дизайн для приложений ВКонтакте
raven009
ЗАБАНЕН!
 
Автор темы
Сообщения: 52
Зарегистрирован: 06 фев 2010, 12:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Google
 



Re: Вопрос по WallPost, Фото на стену Вконтакте

Сообщение Александр » 15 фев 2010, 18:37

Нужно чтобы просто загружалось какое-то фото из альбома? Тогда методы photos.getAlbums и photos.get
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Вопрос по WallPost, Фото на стену Вконтакте

Сообщение raven009 » 15 фев 2010, 22:31

Пример: Бабочки на стену
Картинки с фото альбома, загружать на стены. Вот что я имел в виду.
ПОМОГИТЕ!!!
Желаю учиться, но не могу разобраться (В методах APIВкотакте) (с) id14550770
 Дизайнер приложений ВКонтакте
Создаю только стиль и дизайн для приложений ВКонтакте
raven009
ЗАБАНЕН!
 
Автор темы
Сообщения: 52
Зарегистрирован: 06 фев 2010, 12:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос по WallPost, Фото на стену Вконтакте

Сообщение Александр » 16 фев 2010, 13:04

raven009
Метод wall.savePost http://vkontakte.ru/pages.php?o=-1&p=wall.savePost
Не загружать фото на сервер, а передавать параметр photo_id.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Вопрос по WallPost, Фото на стену Вконтакте

Сообщение raven009 » 16 фев 2010, 14:02

А можно показать это на примере моего кода?

package vk.wall_post
{
  import flash.display.Bitmap;
  import flash.display.Loader;
   import flash.display.Sprite;
  import flash.events.DataEvent;
   import flash.events.Event;
  import flash.events.IOErrorEvent;
  import flash.events.MouseEvent;
  import flash.events.SecurityErrorEvent;
  import flash.net.FileFilter;
  import flash.net.FileReference;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
  import flash.net.URLRequestHeader;
  import flash.net.URLRequestMethod;
  import flash.system.LoaderContext;
  import flash.utils.ByteArray;
  import flash.text.*;

  import vk.api.serialization.json.JSON;


  import vk.api.DataProvider;
  import vk.ui.*;
   

   public class Main extends Sprite {
      public static var FILE_FILTER: Array = ["Images (*.jpg, *.jpeg, *.png)", "*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG"];
   
    private var btnBrowse: VKButton;
    private var btnInstall: VKButton;
    private var uploadButtons: Sprite;
    private var file: FileReference;
    private var imagePreview: Sprite;
    private var resizedImage: Bitmap;
    private var dp: DataProvider;
    private var uploadUrl: String;
    private var wall_id: int;
   
    private var loader: Sprite;
   
    private var wrapper: Object;
    private var app: Object;
    private var params: Object;
   
      public function Main():void {
         addEventListener(Event.ADDED_TO_STAGE, init);
      }
      
      private function init(e:Event = null):void {
         removeEventListener(Event.ADDED_TO_STAGE, init);
     
      wrapper = Object(parent.parent);
     
      if (!wrapper.application) {
         app = stage;
         wall_id = 6492;
         params = stage.loaderInfo.parameters;
         wrapper = stage;
      } else {
        app = wrapper.application;
        params = app.parameters;
        wall_id = params.user_id;
      }
     
      this.graphics.beginFill(0xFFFFFF, 1);
       this.graphics.drawRect(0, 0, app.stageWidth, app.stageHeight);
       this.graphics.endFill();
       
       
      if (params.referrer == 'wall_view_inline' || params.referrer == 'wall_view') {
         var imageLoader: Loader = new Loader();
         imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e: Event): void {
            addChild(imageLoader);
            imageLoader.x = Math.round((app.stageWidth - imageLoader.width) / 2);
            imageLoader.y = 50;
         });
        imageLoader.load(new URLRequest("http://vkontakte.ru/images/gifts/256/182.jpg"));
        return;
      }
     
     
        if (!(params.api_settings & 512+256+4+2)) {
         btnInstall = new VKButton("Установите приложение к себе на страницу");
        btnInstall.addEventListener(MouseEvent.CLICK, onInstallClick);
        wrapper.addEventListener("onApplicationAdded", onAppAdded);
        wrapper.addEventListener("onSettingsChanged", onSettingsChanged);
        btnInstall.y = 50;
        btnInstall.x = Math.round((app.stageWidth - btnInstall.width) / 2);
        addChild(btnInstall);
      } else {
        initForm();
      }
      }
      
      private function onInstallClick(e: Event): void {
         wrapper.external.showInstallBox();
      }
      private function onAppAdded(e: Object): void {
         wrapper.external.showSettingsBox(512+256+128+4+2+1);
      }
      private function onSettingsChanged(e: Object): void {
         params.api_settings = parseInt(e.settings);
         if (params.api_settings & 512+64+32) {
            removeChild(btnInstall);
            initForm();
         }
      }
      
      private function initForm(): void {
         if (String(params.referrer).substr(0, 4) != 'wall') {
            var tf: TextField = new TextField();
            tf.width = 300;
            tf.height = 200;
            tf.x = Math.round((app.stageWidth - tf.width) / 2);
          tf.y = 50;
          tf.embedFonts = false;
          
             var format:TextFormat = new TextFormat();
         format.font = "Tahoma";
            format.color = 0x000000;
            format.size = 13;
            
          tf.autoSize = TextFieldAutoSize.CENTER;
        tf.defaultTextFormat = format;
          addChild(tf);
        tf.appendText("Теперь вы можете запустить это приложение со стены.\n");
          return;
         }
        btnBrowse = new VKButton("Выберите картинку которую хотите загрузить");
      btnBrowse.y = 50;
      btnBrowse.x = Math.round((app.stageWidth - btnBrowse.width) / 2);
      addChild(btnBrowse);
      btnBrowse.addEventListener(MouseEvent.CLICK, onBrowseClick);
     
     
      var btnUpload: VKButton = new VKButton("Загрузить изображение");
      btnUpload.addEventListener(MouseEvent.CLICK, onUploadClick);
      var btnCancel: VKButton = new VKButton("Закрыть", 2);
      btnCancel.x = btnUpload.x + btnUpload.width + 10;
      btnCancel.addEventListener(MouseEvent.CLICK, onCancelClick);
     
      uploadButtons = new Sprite();
      uploadButtons.addChild(btnUpload);
      uploadButtons.addChild(btnCancel);
      uploadButtons.x = Math.round((app.stageWidth - uploadButtons.width) / 2);
      uploadButtons.y = btnBrowse.y;
      uploadButtons.visible = false;
      addChild(uploadButtons);
     
      file = new FileReference();
      file.addEventListener(Event.SELECT, onFileSelected);
     
      loader = new Sprite();
      loader.graphics.beginFill( 0xF7F7F7, 0.3 );
      loader.graphics.drawRect( 0, 0, app.stageWidth, app.stageHeight );
      loader.graphics.endFill();
      var loaderBar: LoaderBar = new LoaderBar();
      loaderBar.x = Math.round((app.stageWidth - loaderBar.width) / 2);
      loaderBar.y = uploadButtons.y - 25;
      loader.addChild(loaderBar);
     
      dp = new DataProvider(params.api_url, id_api, 'x-code', params.viewer_id, true);
      dp.setup( { onError: function(error: String): void {
        debug("Error: " + error);   
      }});
      dp.request("wall.getPhotoUploadServer", { onComplete: function(response: Object): void {
        if (response.upload_url) {
          uploadUrl = response.upload_url;
        }
      }});
      }
   
    private function onBrowseClick(e: MouseEvent): void {
      file.browse([new FileFilter(FILE_FILTER[0], FILE_FILTER[1])]);
    }
    private function onFileSelected(e:Event): void {
      if (file.size == 0) {
           debug("File size is zero bytes");
         return;
         }
         file.addEventListener(Event.COMPLETE, onFileLoaded);
      file.load();
    }
    private function onFileLoaded(e: Event): void {
      file.removeEventListener(Event.COMPLETE, onFileLoaded);
      // Resample image
      var data: ByteArray = ByteArray(e.target.data);
      var imgLoader:Loader = new Loader();
        imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
        imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onImageLoadError);
         imgLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onImageLoadError);
      imgLoader.loadBytes(data, new LoaderContext(false));
    }
   
    public function onImageLoaded(e: Event): void {
       var source: Bitmap = Bitmap(e.target.content);
       resizedImage = ImageHelper.resize(source, 200, 300);
       source.bitmapData.dispose();
     
      btnBrowse.visible = false;
      uploadButtons.visible = true;
     
      if (imagePreview && contains(imagePreview)) {
        removeChild(imagePreview);
        imagePreview = null;
      }
     
      imagePreview = new Sprite();
      imagePreview.addChild(resizedImage);
      imagePreview.x = Math.round((stage.stageWidth - imagePreview.width) / 2 );
      imagePreview.y = uploadButtons.y + uploadButtons.height + 20;
      addChild(imagePreview);
     
     }
   
    private function onUploadClick(e:MouseEvent): void {
      var urlRequest: URLRequest = new URLRequest();
       if (uploadUrl == "") {
         debug("Upload URL is empty");
         return;
       } else {
          debug(uploadUrl);
       }
      urlRequest.url = uploadUrl;
      urlRequest.method = URLRequestMethod.POST;
      urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
     
      // Configure listeners
      file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, onUploadComplete);
      file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
      file.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
      try {
        file.upload(urlRequest, 'photo');
        showLoader();
      } catch (error:Error) {
        debug("Upload error");
        return;
      }
    }
     private function onCancelClick(e:MouseEvent): void {
      showBrowse();
    }
   
   
    private function onUploadComplete(e: DataEvent): void {
      debug("Upload complete");
      debug('Data: ' + e.data);
      showLoader(false);
      var data: Object = JSON.decode(e.data);
        if (data.photo) {
           data.message = 'TESTTEXT.';
           data.wall_id = wall_id;
           data.post_id = 'post1';
            dp.request('wall.savePost', { params: data, onComplete: function(response: Object): void {
          debug(response.post_hash);
          debug(response.photo_src);
          wrapper.external.saveWallPost(response.post_hash);
            }} );   
      }
    }
   
    private function showBrowse(): void {
      btnBrowse.visible = true;
      uploadButtons.visible = false;
      if (imagePreview && contains(imagePreview)) {
        removeChild(imagePreview);
      }
      imagePreview = null;
    }
   
    private function showLoader(show: Boolean = true): void {
      if (contains(loader) && !show) {
        removeChild(loader);
      } else if (!contains(loader) && show) {
        addChild(loader);
      }
    }
   
     private function onImageLoadError(e: Event): void {
       debug("Ошибка загрузке изображений");
      showLoader(false);
     }
    private function onSecurityError(e: SecurityErrorEvent): void {
      debug("Ошибка безопасности");
      showLoader(false);
    }
    private function onIOError(e: IOErrorEvent): void {
      debug("Ошибка ввода-вывода");
      showLoader(false);
    }
    private function debug(msg: *): void {
      trace(debug);
      if (wrapper.external)
        wrapper.external.debug(msg);
    }
  }
}
Желаю учиться, но не могу разобраться (В методах APIВкотакте) (с) id14550770
 Дизайнер приложений ВКонтакте
Создаю только стиль и дизайн для приложений ВКонтакте
raven009
ЗАБАНЕН!
 
Автор темы
Сообщения: 52
Зарегистрирован: 06 фев 2010, 12:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос по WallPost, Фото на стену Вконтакте

Сообщение raven009 » 17 фев 2010, 21:09

Ну так поможет кто?
Желаю учиться, но не могу разобраться (В методах APIВкотакте) (с) id14550770
 Дизайнер приложений ВКонтакте
Создаю только стиль и дизайн для приложений ВКонтакте
raven009
ЗАБАНЕН!
 
Автор темы
Сообщения: 52
Зарегистрирован: 06 фев 2010, 12:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос по WallPost, Фото на стену Вконтакте

Сообщение raven009 » 19 фев 2010, 14:58

ау
Желаю учиться, но не могу разобраться (В методах APIВкотакте) (с) id14550770
 Дизайнер приложений ВКонтакте
Создаю только стиль и дизайн для приложений ВКонтакте
raven009
ЗАБАНЕН!
 
Автор темы
Сообщения: 52
Зарегистрирован: 06 фев 2010, 12:09
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос по WallPost, Фото на стену Вконтакте

Сообщение VITAL » 19 фев 2010, 15:40

Ни кто поагать не хочет ЖАЛЬ))))
VITAL

 
Сообщения: 34
Зарегистрирован: 29 дек 2009, 13:32
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.


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



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

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

cron