Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.04.2010, 15:26
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 1  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
По умолчанию Постинг скрина на стену ВКонтакте

всем привет.

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

Старый 05.04.2010, 15:57
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Вопрос в том, где сохранить и как передать айди нужной фотки приложению, открываемому со стены, чтобы оно открывало именно ту фотку, которую надо.
Id фото, сохраненного в альбом, нужно сохранить в post_id.
Id фото для getById будет poster_id + "_" + post_id.

Старый 08.04.2010, 15:06
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 3  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
в очередной раз большое спасибо 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])
				}				
 
*/

Старый 08.04.2010, 15:10
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 4  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Код 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

Старый 08.04.2010, 15:10
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 5  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Код 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.width =  800;
								scrloader.height =  600;
								}
 
						}
 
				} 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... ( Что-тоя видимо не так где-то делаю...


Последний раз редактировалось ZergMaster; 08.04.2010 в 15:13.
Старый 08.04.2010, 16:20
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
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");
		}

Старый 08.04.2010, 18:32
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 7  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
все равно - Incorrect signature

может я что-то не понял.. я просто написал
Код AS3:
var AlbTitle:String = encodeURI("Мое приложение")


Последний раз редактировалось ZergMaster; 08.04.2010 в 18:45.
Старый 08.04.2010, 18:42
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Запрос составлять нужно с помощью URLVariables и таких проблем не будет.

Старый 08.04.2010, 19:12
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 9  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
ZergMaster, я специально кусок кода привел - encodeURI только в запросе к серверу
В том тексте, что идет в МД5, encodeURI нет. Там просто русское название.


Последний раз редактировалось mikhailk; 08.04.2010 в 19:17.
Старый 12.04.2010, 06:58
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 10  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
ZergMaster, на будущее, мультипостинг на форуме запрещен.
__________________
trace("Остановите Землю, я сойду!!!");

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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