Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Постинг скрина на стену ВКонтакте (http://www.flasher.ru/forum/showthread.php?t=138346)

ZergMaster 05.04.2010 15:26

Постинг скрина на стену ВКонтакте
 
всем привет.

Есть приложение вконтакте.
В приложении есть кнопочка "скрин", по нажатию которой должен происходить снимок экрана и постинг скрина на стену выбранному пользователю. с основной частью разобрался: все ништяк, принажатии "скрин" происходит снимок экрана, создается альбом (если его ещё нет с таким названием) и туда добавляется новая фотка. Но вопрос, как этот скрин разместить на стене? Ничего не выходит, открывает просто приложение, где все нелепо дергается, так как action script не идет.
Вопрос в том, где сохранить и как передать айди нужной фотки приложению, открываемому со стены, чтобы оно открывало именно ту фотку, которую надо.

udaaff 05.04.2010 15:57

Цитата:

Вопрос в том, где сохранить и как передать айди нужной фотки приложению, открываемому со стены, чтобы оно открывало именно ту фотку, которую надо.
Id фото, сохраненного в альбом, нужно сохранить в post_id.
Id фото для getById будет poster_id + "_" + post_id.

ZergMaster 08.04.2010 15:06

в очередной раз большое спасибо to udaaff! Хоть и изломал голову, но таки решил проблему. ) Приведу код, вдруг кому поможет. Предупреждаю сразу - пишу пока что по ламерски в первом фрэйме. Хоть и осознаю, что .as файлами писать гораздо правильней, лаконичней удобней потом модифицировать программу, но меня почему-то пока что такой способ пугает.. хотя надо...

В данном коде, имхо, полностью раскрыта тема Снятия сэкрана Битовой маски, создания альбома вконтакте и отправки этой битовой маски в качестве фотографии в этот альбом, после чего постинг получившейся фотографии на стену выбранного друга.

все дело происходит при нажатии на кнопку scrin

vkr - это переменная, в которой лежит класс VkontakteRequest

Добавлено через 2 минуты
Код AS3:

 
scrin.butScreen.addEventListener(MouseEvent.CLICK, prtScr)        scrin.butScreen.useHandCursor = true;
scrin.butScreen.buttonMode = true;
function prtScr(e:Event):void
        {
                        var ssil:String;//ссылка на фото
                        var Alboms:XML; //сканирование альбомов
                        var boolAlbom:Boolean = false; //добавлен ли альбом c определенным названием
                        var IDAlbom:String; //айдишник альбома
                        var AlbTitle:String = "My Albom" //назване альбома автоматов
                        var UploadURL:String; //адрес сервера на который грузить фотки;
 
                        vkr.addEventListener(VkontakteEvent.VK_RESPONSE, onGetUserSettingsResponse);
                        vkr.sendGetUserSettings();       
 
                        function onGetUserSettingsResponse(e:VkontakteEvent):void
                                {
                                        vkr.removeEventListener(VkontakteEvent.VK_RESPONSE, onGetUserSettingsResponse);
                                        trace('Boolean(e.xml.settings & 512) = '+Boolean(e.xml.settings & 512))
                                        if((Boolean(e.xml.settings & 512)==false)||(Boolean(e.xml.settings & 4)==false))
                                        //проверяем: если у юзера в настройках не стоят галочки "доступ к фотографиям" и "постинг на стену"
                                                {
                                                        wrapper.addEventListener("onSettingsChanged", onSettingsChange);
                                                        wrapper.external.showSettingsBox(516);
                                                        //то вызываем окошечко с предложением это сделать
                                                        function onSettingsChange(e: Object): void
                                                                {
                                                                        wrapper.removeEventListener("onSettingsChanged", onSettingsChange);                                                                                       
                                                                        _getAlboms();                                                                                                       
                                                                        }
                                                } else { //если все ништяк и галки стоят - проверяем альбомы
                                                                _getAlboms();
                                                                }
                                        }
 
 
 
                        function _getAlboms():void
                                {
                                        vkr.addEventListener(VkontakteEvent.VK_RESPONSE, onGetAlbumResponse);
                                        vkr.addEventListener(VkontakteEvent.VK_ERROR, onGetAlbumError);
                                        vkr.sendGetAlbum();
 
                                        function onGetAlbumResponse(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_RESPONSE, onGetAlbumResponse);
                                                        Alboms = e.xml;
                                                        trace('\n'+'Список альбомов (Alboms) = '+Alboms)
                                                        _findCreatedAlbom();                                               
 
                                                        //получаем список альбомов юзера, заносим в переменную и вызываем функц. поиск альбома
                                                        }
                                        function onGetAlbumError(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_ERROR, onGetAlbumError);
                                                        trace('\n'+'Ошибочка вышла')
                                                        }
 
                                        }
 
                        function _findCreatedAlbom():void //функция сканирует альбомы на предмет того, создавал ли пользователь уже такой
                                {
                                        for(var i:Number=0; i<Alboms..album.length(); i++) //перебираем альбомы
                                                {
 
                                                        if(Alboms.album[i].title == AlbTitle)
                                                                {
                                                                        trace('\n'+"В конце же концов!! Хватит создавать альбомы один за другим!")
                                                                        IDAlbom = Alboms.album[i].aid                                                               
                                                                        boolAlbom = true;
                                                                        _GetUploadServer(IDAlbom);
 
                                                                        //если название альбома совпадает с именем нашего альбома ("My Albom"), значит он
                                                                        //уже создан, о чем мы сообщаем в переменную boolAlbom и запускаем функц
                                                                        //для получения ссылки для загрузки нашего скрина в данный альбом
                                                                        }
                                                        }                                                                               
                                        if(boolAlbom==false)
                                                {
                                                        _createAlb();
                                                        //если же boolAlbom так и осталась false, значит альбома с таким названием ещё нет,
                                                        //что мы тут же исправляем, запуская функцию _createAlb()
                                                        }
 
                                        }
 
 
 
 
                        function _createAlb():void
                                {
                                        trace("\n"+"создаем альбом");
                                        vkr.addEventListener(VkontakteEvent.VK_RESPONSE, onCreateAlbumResponse);
                                        vkr.addEventListener(VkontakteEvent.VK_ERROR, onCreateAlbumError);
                                        vkr.sendCreateAlbum(AlbTitle);       
                                        }
 
                                        function onCreateAlbumResponse(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_RESPONSE, onCreateAlbumResponse);                               
                                                        trace("ответ, который пришел(?) = "+e.xml)
                                                        trace('а так же переменная, которая мне чрезвычайно нужна = '+e.xml.album.aid)
                                                        IDAlbom = e.xml.album.aid
                                                        _GetUploadServer(IDAlbom);
                                                        }
 
                                        function onCreateAlbumError(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_ERROR, onCreateAlbumError);
                                                        trace("ответ, который пришел(?) = "+e.message)                       
                                                        }
 
 
                        function _GetUploadServer(IDA):void
                                {
                                        trace("\n"+"получаем адрес для загрузки");
                                        vkr.addEventListener(VkontakteEvent.VK_RESPONSE, onGetUploadServerResponse);
                                        vkr.addEventListener(VkontakteEvent.VK_ERROR, onGetUploadServerError);
                                        vkr.sendGetUploadServer(IDA);       
                                        }
 
                                        function onGetUploadServerResponse(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_RESPONSE, onGetUploadServerResponse);                                                       
                                                        UploadURL = e.xml.upload_url;
                                                        trace('\n'+'UploadURL ===> '+UploadURL)
 
                                                        //ура, получили ссылку на загрузку фоток, сохраняем её в переменную и запускаем функц
                                                        //выбор друга, при помощ которой пользователь сможет выбрать друга, на стену которого
                                                        //он хочет загрузить скрин.
                                                        _viborDruga();
                                                        }
                                        function onGetUploadServerError(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_ERROR, onGetUploadServerError);
                                                        trace('Errora')
                                                        }
 
 
var Wally = wrapper.application.parameters["viewer_id"]; //это на будущее, заносим в переменную Wally viewer_id.
                                                                            //в ней будет хранится id пользователя, на стену которого будет поститься скрин
 
//теперь будет длинная функция Выбор друга.
//тут используется некий RaytingerArr
//это массив, полученный в результате вызова метода getProfiles(id:String) в другой части программы
//чтобы было понятно, что в нем лежит, приведу кусок кода оттуда:
/*
function onGetProfilesResponse2(e: VkontakteEvent):void
        {
                vkr.removeEventListener(VkontakteEvent.VK_RESPONSE, onGetProfilesResponse2);
                for(var I:Number=0; I<e.xml..user.length(); I++)
                        {                                                               
                                RaytingerArr.push([e.xml.user[i].first_name, e.xml.user[i].photo_medium, e.xml.user[i].last_name, e.xml.user[i].uid])
                                }                               
 
*/


ZergMaster 08.04.2010 15:10

Код AS3:

 
function _viborDruga():void
                {
                        var forScroll2 = new ForScroll(); //добавляю символ из библиотеки, который состоит из 7-ми элементов
//1 - фоновое окошечко - cath. Область захвата среднего колеса
//2 - кнопочка ExiT - прсто крестик, как в винде
//3 - мувик scrollMaster - внутри него лежит маска, под которой мувик toScroll, который будет под этой маской скроллроваться и куда
//будет аттачиться список друзей
//4, 5, 6, 7 - кнопочки управления списком raitingerPlay, raitingerPlay1, raitingerPeremot, raitingerPeremot1
//вобщем как сумел объяснил, времени не сильно много вдаваться в подробности.
//8 - SCR - ползунок, отображающий положений текста. По хорошему его бы тоже задействовать, чтобы можно было управлять,
//но я пока поленился...
 
                        var podSCR = new PodSCR()// это просто элемент дизайна, вам не важен
                        addChild(forScroll2);
                        addChild(podSCR)
                        var Sp2 = 17;
                        var Speeder2 = 0;
                        addEventListener(Event.ENTER_FRAME, weeel2)
                        function weeel2(e:Event):void
                                {
                                        if(forScroll2.scrollMaster.toScroll.y>0.1)
                                                {                                                                       
                                                        var minus2 = forScroll2.scrollMaster.toScroll.y-34
                                                        forScroll2.scrollMaster.toScroll.y = minus2
                                                        }
                                        if(forScroll2.scrollMaster.toScroll.y<0.1-(textHeight*RaytingerArr.length-(textHeight*15)))
                                                {                                                                       
                                                        var plus2 = forScroll2.scrollMaster.toScroll.y+34
                                                        forScroll2.scrollMaster.toScroll.y=plus2
                                                        }                                                                               
                                        if(forScroll2.scrollMaster.toScroll.y<0.1)
                                                {                                                                                                                                                                                                                                               
                                                        if(_PlayUpScroll==true)
                                                                {
                                                                        Speeder2++
                                                                        if(Speeder2>10)
                                                                                {
                                                                                        Sp2 = 17*3
                                                                                        trace("timeout UP")
                                                                                        }                                                                                               
                                                                        forScroll2.scrollMaster.toScroll.y+=Sp2;
                                                                        }
                                                        }
                                        if(forScroll2.scrollMaster.toScroll.y>0.1-(textHeight*RaytingerArr.length-(textHeight*15)))
                                                {                                                                                                                                                               
                                                        if (_PlayDownScroll==true)
                                                                {                                                                                               
                                                                        Speeder2++
                                                                        if(Speeder2>10)
                                                                                {
                                                                                        Sp2 = 17*3
                                                                                        trace("timeout DOWN")
                                                                                        }
                                                                        forScroll2.scrollMaster.toScroll.y-=Sp2;
                                                                        }
                                                        }
                                        forScroll2.scrollMaster.SCR.y = (173*(forScroll2.scrollMaster.toScroll.y/(255-forScroll2.scrollMaster.toScroll.height)))+51.4
                                        if((mouseX>225)&&(mouseX<600)&&(mouseY>187)&&(mouseY<487))
                                                {
                                                        MouseWheel.capture(); //захватываем колесо мыши, чтобы было удобно юзеру прокручивать)
                                                                                        //Класс MouseWheel можно скачать, гуглите
                                                                } else {
                                                                        MouseWheel.release(); //отпускаем колесо мыши
                                                                        }
                                        }
 
 
 
 
 
                        addEventListener(MouseEvent.MOUSE_WHEEL, scrolling2);
                        function scrolling2(event:MouseEvent):void
                                {
                                        forScroll2.scrollMaster.SCR.y = (173*(forScroll2.scrollMaster.toScroll.y/(255-forScroll2.scrollMaster.toScroll.height)))+51.4       
                                        if(event.delta >0) //если колесико вверх
                                                {                       
                                                        if(forScroll2.scrollMaster.toScroll.y<0.1)
                                                                {
                                                                        forScroll2.scrollMaster.toScroll.y+=textHeight
                                                                        }
                                                        }
                                        if(event.delta <0) //если колесико вниз
                                                {
                                                        if(forScroll2.scrollMaster.toScroll.y>0.1-(textHeight*RaytingerArr.length-(textHeight*15)))
                                                                {
                                                                        forScroll2.scrollMaster.toScroll.y-=textHeight
                                                                        }
                                                        }
                                        }
                                                /////////////////////////
                                                /////////////////////////
 
                        var FScrollArr2:Array = new Array;
 
 
                        for(var i:Number=0; i<RaytingerArr.length; i++)
                                {                                                               
                                        var fff2 = new FFF();                //это просто мувик-контейнер                                               
                                        FScrollArr2.push(new TextField());
                                        forScroll2.scrollMaster.toScroll.addChild(fff2);
                                        fff2.addChild(FScrollArr2[i]);                                                               
                                        FScrollArr2[i].width = 302;
                                        FScrollArr2[i].height = textHeight;
                                        FScrollArr2[i].x                                                               
                                        fff2.x=0;
                                        fff2.y=i*textHeight;
                                        fff2.mouseChildren = false;
                                        FScrollArr2[i].defaultTextFormat = fmtTObBB;
                                        FScrollArr2[i].background = true;
                                        FScrollArr2[i].border = true;
                                        FScrollArr2[i].backgroundColor = 0x007D00;
                                        FScrollArr2[i].text = RaytingerArr[i][0]+" "+RaytingerArr[i][2]; //имя-фамилия друга под номером i в массиве
                                        FScrollArr2[i].selectable = false;
                                        fff2.addEventListener(MouseEvent.MOUSE_OVER, scrollButsaOver2)
                                        fff2.addEventListener(MouseEvent.MOUSE_OUT, scrollButsaOut2)
                                        fff2.addEventListener(MouseEvent.CLICK, scrollButsaClik2)
                                        fff2.IDtext = RaytingerArr[i][3]
                                        fff2.ind = i                                                                                                                               
                                        }
 
                        function scrollButsaClik2(e:Event):void
                                {
                                        Wally= String(e.target.IDtext); //при нажатии на одного из друзей заносим его id в переменную Wally
                                        removeChild(podSCR);
                                        removeChild(forScroll2);
                                        _upLoadPhoto(UploadURL); //запускаем загрузку фотки в альбом
                                        removeEventListener(Event.ENTER_FRAME, weeel2);
                                        }
 
                        function scrollButsaOver2(e:Event):void
                                {
                                        FScrollArr2[e.target.ind].backgroundColor = 0x013500;
                                        FScrollArr2[e.target.ind].setTextFormat(fmtTRATATA)
                                        }
                        function scrollButsaOut2(e:Event):void
                                {
                                        FScrollArr2[e.target.ind].backgroundColor = 0x007D00;
                                        FScrollArr2[e.target.ind].setTextFormat(fmtTObBB)
                                        }
 
                                                ///////////////////////////////////////
                                                //////////БУТСЫ фо скролла/////////////
                                                //////////////////////////////////////
                        forScroll2.raitingerPlay1.addEventListener(MouseEvent.CLICK, onPlayUpScroll2)
                        forScroll2.raitingerPlay1.addEventListener(MouseEvent.MOUSE_DOWN, onDOWN_PlayUpScroll2)
                        forScroll2.raitingerPlay2.addEventListener(MouseEvent.CLICK, onPlayDownScroll2)
                        forScroll2.raitingerPlay2.addEventListener(MouseEvent.MOUSE_DOWN, onDOWN_PlayDownScroll2)                       
                        forScroll2.raitingerPeremot1.addEventListener(MouseEvent.CLICK, onPeremotUpScroll2)
                        forScroll2.raitingerPeremot2.addEventListener(MouseEvent.CLICK, onPeremotDownScroll2)
                        forScroll2.raitingerPlay1.buttonMode = true;
                        forScroll2.raitingerPlay1.useHandCursor = true;
                        forScroll2.raitingerPlay2.buttonMode = true;
                        forScroll2.raitingerPlay2.useHandCursor = true;
                        forScroll2.raitingerPeremot1.buttonMode = true;
                        forScroll2.raitingerPeremot1.useHandCursor = true;
                        forScroll2.raitingerPeremot2.buttonMode = true;
                        forScroll2.raitingerPeremot2.useHandCursor = true;
 
                        function onDOWN_PlayUpScroll2(e:Event):void
                                {
                                        _PlayUpScroll=true;
                                        Sp2 = 17;
                                        forScroll2.addEventListener(MouseEvent.MOUSE_UP, onUP_PlayUpScroll2)
                                        }
                        function onUP_PlayUpScroll2(e:Event):void
                                {
                                        forScroll2.removeEventListener(MouseEvent.MOUSE_UP, onUP_PlayUpScroll2)
                                        _PlayUpScroll=false;                                                               
                                        Sp2 = 17;
                                        Speeder2=0                                                               
                                        }
                        function onDOWN_PlayDownScroll2(e:Event):void
                                {
                                        _PlayDownScroll=true;
                                        Sp2 = 17;
                                        forScroll2.addEventListener(MouseEvent.MOUSE_UP, onUP_PlayDownScroll2)
                                        }
                        function onUP_PlayDownScroll2(e:Event):void
                                {
                                        forScroll2.removeEventListener(MouseEvent.MOUSE_UP, onUP_PlayDownScroll2)
                                        _PlayDownScroll=false;                                                                                                                       
                                        Sp2 = 17;
                                        Speeder2=0
                                        }
                        function onPlayUpScroll2(e:Event):void
                                {
                                        trace('forScroll2.scrollMaster.toScroll.y = '+forScroll2.scrollMaster.toScroll.y)
                                        if(forScroll2.scrollMaster.toScroll.y<(0.1))
                                                {
                                                        //forScroll.scrollMaster.toScroll.y+=textHeight
                                                        }
                                        }
                        function onPlayDownScroll2(e:Event):void
                                {
                                        trace('forScroll2.scrollMaster.toScroll.y = '+forScroll2.scrollMaster.toScroll.y)
                                        if(forScroll2.scrollMaster.toScroll.y>0.1-(textHeight*RaytingerArr.length-(textHeight*15)))
                                                {
                                                        //forScroll.scrollMaster.toScroll.y-=textHeight
                                                        }
                                        }
                        function onPeremotUpScroll2(e:Event):void
                                {
                                        forScroll2.scrollMaster.toScroll.y=0.1
                                        }
                        function onPeremotDownScroll2(e:Event):void
                                {
                                        forScroll2.scrollMaster.toScroll.y=0.1-(textHeight*RaytingerArr.length-(textHeight*15))
                                        }
 
                        forScroll2.ExiT.addEventListener(MouseEvent.CLICK, onExiTScroll2)
                        forScroll2.ExiT.buttonMode = true;
                        forScroll2.ExiT.useHandCursor = true;
                        function onExiTScroll2(e:Event):void
                                {
                                        removeChild(podSCR);
                                        removeChild(forScroll2);
                                        removeEventListener(Event.ENTER_FRAME, weeel2)
                                        _upLoadPhoto(UploadURL); //запускаем загрузку фотки. Если пользователь не выбрал друга,
                                                                            //значит Wally осталось равно viewer_id и скрин загрузится на стену пользователя.
                                        }
                        forScroll2.ExiT.addEventListener(MouseEvent.MOUSE_OVER, onExiTScrollOver2)
                        forScroll2.ExiT.addEventListener(MouseEvent.MOUSE_OUT, onExiTScrollOut2)                       
                        function onExiTScrollOver2(e:Event):void
                                {
                                        forScroll2.ExiT.gotoAndPlay(2)                                                               
                                        }
                        function onExiTScrollOut2(e:Event):void
                                {
                                        forScroll2.ExiT.gotoAndPlay(4)                                                               
                                        }
 
                }//_viborDruga end


ZergMaster 08.04.2010 15:10

Код AS3:

 
 
 
 
 
 
 
        var Wate = new wate();
        var sendScr = new SendScr();
        function _upLoadPhoto(urlak:String):void
                {
 
                        wrapper.external.scrollWindow(500, 500); //скроллируем окно к кнопке sendScr (этот как бы подтверждение отправки)
 
                        addChild(sendScr);
                        sendScr.x=0;
                        sendScr.y=610;
 
                        sendScr.addEventListener(MouseEvent.CLICK, sendScrHandler)
                        sendScr.useHandCursor = true;
                        sendScr.buttonMode = true;
                        function sendScrHandler(e:Event):void
                                {
 
 
                                                        addChild(Wate);
                                                        Wate.x = 0;
                                                        Wate.y = 608.0;
                                                        var bmd:BitmapData=new BitmapData(800, 600, false); //--создаем bitmapdata
                                                        bmd.draw(stage); //--рисуем в битмапе интересующий мувиклип
 
                                                        var byteArrayScr : ByteArray = new JPGEncoder(85).encode(bmd);
 
//здесь хотелось бы отметить, что для вышесказанного требуется (и для кое-чего внизу):
//import fl.transitions.Tween;
//import fl.transitions.easing.*;
//import com.adobe.serialization.json.JSON;
//import flash.utils.getQualifiedClassName;
//import com.adobe.images.JPGEncoder;
//import MultipartURLLoader;
//
 
 
 
                                                        var loader:Loader = new Loader();
                                                        loader.loadBytes(byteArrayScr);
                                                        //addChild(loader);
 
 
                                                        var mll:MultipartURLLoader = new MultipartURLLoader();
                                                        mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);                       
                                                        mll.addFile(byteArrayScr, "file.jpg", "file1", 'image/jpg');
                                                        mll.load(UploadURL);       
 
 
 
 
 
                                        function onUploadCompleteThroughAlarm(event:Event):void
                                                {
                                                        event.currentTarget.removeEventListener(event.type, arguments.callee);
                                                        savePhotos(parseServerAck(event.currentTarget.loader.data as String));
 
                                                        trace('********************onUploadCompleteThroughAlarm ==========> ')
                                                        }
                                        function parseServerAck(serverAck:String):*
                                                {
                                                        var result:* = new Object;
                                                        for each(var pair:String in serverAck.split(/\s*[{},]\s*/))       
                                                                {
                                                                        var tmp:Array = pair.split(/\s*[:"]\s*/);
                                                                        if (  (tmp[1] == "server")
                                                                                                                          || (tmp[1] == "photos_list")
                                                                                                                          || (tmp[1] == "aid")
                                                                                                                          || (tmp[1] == "hash"))
                                                                                {
                                                                                        result[tmp[1]] = tmp[4];
                                                                                        }
                                                                        }
                                                        return result;                       
                                                        }
 
                                        function savePhotos(serverAck:*):void
                                                {                       
                                                        var variables:URLVariables = new URLVariables;
                                                        for(var key:String in serverAck)
                                                                {
                                                                        variables[key] = serverAck[key];
                                                                        }
                                                        _savePhoto(variables.aid, variables.server, variables.photos_list, variables.hash)                                                       
                                                        }
 
 
 
 
                                        }
 
 
 
 
 
 
 
 
 
                        function _savePhoto(AiD:String, ServeR:String, Photos_lisT:String, HasH:String):void
                                {
                                        vkr.addEventListener(VkontakteEvent.VK_RESPONSE, onSavePhotoResponse);
                                        vkr.addEventListener(VkontakteEvent.VK_ERROR, onSavePhotoError);
                                        vkr.sendSavePhoto(AiD, ServeR, Photos_lisT, HasH)
                                        }
 
                                        function onSavePhotoResponse(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_RESPONSE, onSavePhotoResponse);
                                                        trace('........... по идее фотка загрузилась в наш новый альбом... '+'\n'+'e.xml = '+e.xml)
                                                        ssil = e.xml.photo.src_big;
 
 
                                                        var toWallId = e.xml.photo.pid;
                                                        var asdf = String(wrapper.application.parameters["viewer_id"]+'_'+e.xml.photo.pid);
                                                        removeChild(Wate);
                                                        _SavePost(asdf, toWallId) // а вот это мы уже будем постить фотку из альбома на стену
 
                                                        }
                                        function onSavePhotoError(e:VkontakteEvent):void
                                                {
                                                        vkr.removeEventListener(VkontakteEvent.VK_ERROR, onSavePhotoError);
                                                        trace('Большая и страшная Еррора = '+e.message)
 
                                                        }
 
 
 
 
 
 
 
 
 
                                        }
 
 
                        function _SavePost(Photo_id, ToWallId):void
                                {
 
                                        vkr.addEventListener(VkontakteEvent.VK_RESPONSE, onSavePost);
                                        trace('Photo_id = '+Photo_id);
                                        trace('toWallId = '+ToWallId);
                                        vkr.sendSavePost(Wally, Photo_id, ToWallId)
                                        function onSavePost(e:VkontakteEvent):void
                                                {
                                                        trace("onSavePost ===> "+e.xml)
 
                                                        removeChild(sendScr);
                                                        wrapper.external.saveWallPost(e.xml.post_hash);
                                                        gotoAndPlay(1);
 
 
                                                        }
 
                                        }
 
 
 
 
 
 
 
 
 
 
 
                        }

Добавлено через 1 минуту
Вот такая штука... Но даже и этого недостаточно. В начале приложения надо обозначить, что если оно открывается со стены, то нужно образить определенную фотку из определенного альбома определенного юзверя... У меня это реализовано так:

Код AS3:

var wrapper: Object;
this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage ); //стандартный листенер вконтактовского прелоадера wrapper
 
function onAddedToStage(e: Event): void 
        {
        var temnovato =new Temno();
        addChild(temnovato)
 
        wrapper = Object(parent.parent);
        vkr = new VkontakteRequest(wrapper.application.parameters["viewer_id"], wrapper.application.parameters["api_url"]);
        trace("wrapper.application.parameters['referrer'] ============>"+wrapper.application.parameters['referrer'])
        trace("wrapper.application.parameters['post_id'] ============>"+wrapper.application.parameters['post_id'])
        trace("wrapper.application.parameters['post_id'] ============>"+wrapper.application.parameters['poster_id'])
 
        if(wrapper.application.parameters['referrer']=="wall_view_inline") //если со стены
                        {
                                vkr.addEventListener(VkontakteEvent.VK_RESPONSE, onGetByIdResponse);
                                vkr.sendGetById(wrapper.application.parameters['poster_id']+'_'+wrapper.application.parameters['post_id']);       
                                function onGetByIdResponse(e: VkontakteEvent): void
                                        {
 
                                                vkr.removeEventListener(VkontakteEvent.VK_RESPONSE, onGetByIdResponse);
                                                trace('e.xml.photo[0].src_big = '+e.xml.photo[0].src_big)
 
                                                var scrloader = new Loader();                                               
                                                var scrloaderContext2:LoaderContext = new LoaderContext();
                                                scrloaderContext2.checkPolicyFile = true;                                                                                               
                                                var scrPRErequest:URLRequest = new URLRequest(e.xml.photo[0].src_big);
 
 
                                                scrloader.load(scrPRErequest, scrloaderContext2);                                               
                                                scrloader.contentLoaderInfo.addEventListener(Event.COMPLETE,SCRcomImage);
 
                                                function SCRcomImage(e:Event):void
                                                        {
                                                                removeChild(temnovato);
                                                                addChild(scrloader);
                                                                scrloader.width800;
                                                                scrloader.height600;
                                                                }
 
                                                }
 
                                } else
                                                {
                                                removeChild(temnovato);
                                                }
 
 
        wrapper.external.setTitle('Moе приложение');
        wrapper.external.scrollWindow(100, 500);
        wrapper.addEventListener("onApplicationAdded", onApplicationAdded);
        wrapper.external.showInstallBox()
 
 
        }

Добавлено через 14 минут
Но вот осталась все-таки одна проблемка... С кодировками. Почему-то, если нузываю альбом по русски
Код AS3:

var AlbTitle:String = "Мой альбом"

то получается incorrect signature, потому что отсылается почему-то абракадабра полная.. хотя по идее все должно быть тип-топ, ведь по умолчанию всегда UTF-8, и контакт должен понимать эту кодировку.. Эта проблема не только тут, точно так же и с пояснениями к альбому - если по русски, что-то там с кодировками. Я пробовал escape().. в этом случае в запросе уже показывается не абракадабра, но все равно incorrect signature... ( Что-тоя видимо не так где-то делаю...

mikhailk 08.04.2010 16:20

ZergMaster, encodeURI

Код AS3:

 
                /**************************************************************************/
                /*    Создание альбома у пользователя                                    */
                /**************************************************************************/
                public function createAlbum(requestData){
                        var signatureForMD5:String = wrapper.application.parameters.viewer_id
                                                        + "api_id=" + wrapper.application.parameters.api_id
                                                        + "method=photos.createAlbum"
                                                        + "test_mode="+testMode
                                                        + "title=" + requestData.albumName
                                                        + "v=2.0"
                                                        + GlobalParameters.appCode;
                        var signatureMD5:String = convertorMD5.encrypt(signatureForMD5);
                        var requestString:String = wrapper.application.parameters.api_url
                                                        + "?api_id=" + wrapper.application.parameters.api_id
                                                        + "&method=photos.createAlbum"
                                                        + "&sig=" + signatureMD5
                                                        + "&test_mode="+testMode
                                                        + "&title=" + encodeURI(requestData.albumName)
                                                        + "&v=2.0"
                                                        ;
                        connectToURL(requestString,"createAlbum");
                }


ZergMaster 08.04.2010 18:32

все равно - Incorrect signature

может я что-то не понял.. я просто написал
Код AS3:

var AlbTitle:String = encodeURI("Мое приложение")


udaaff 08.04.2010 18:42

Запрос составлять нужно с помощью URLVariables и таких проблем не будет.

mikhailk 08.04.2010 19:12

ZergMaster, я специально кусок кода привел - encodeURI только в запросе к серверу
В том тексте, что идет в МД5, encodeURI нет. Там просто русское название.

Mur4ik 12.04.2010 06:58

ZergMaster, на будущее, мультипостинг на форуме запрещен.


Часовой пояс GMT +4, время: 20:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.