ApiConnection,AS3.
Этот урок является продолжением к моему первому уроку(http://flapps.ru/forum/topic3587.html)
Приложение загружает профильную фотографию пользователя из контакта и позволяет поставить на нее обычную картинку, затем сохраняет результат в профиль пользователя.
Первый шаг
Создайте папку с названием changephoto.
Теперь нужно создать .as фаил,назвать его Main.as и сохранить в папке changephoto.
Прокомментированный код ниже,поместите его в Main.as
Код: Выделить всё
package { import flash.display.*; import flash.events.*; import flash.utils.ByteArray; import flash.net.URLRequest; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import flash.net.URLLoader; import flash.system.LoaderContext import flash.system.ApplicationDomain import vk.api.serialization.json.JSON; import vk.api.MD5; import vk.APIConnection; import vk.events.*; import vk.ui.*; import vk.PNGEncoder; import vk.MultipartURLLoader; import vk.MultipartURLLoaderEvent; import vk.api.serialization.json.JSON; //папку vk можно найти в исходнике. public class Main extends Sprite { public var uploadphoto:VKButton; //обычная кнопка public var loader:Loader = new Loader(); public var urlforpost:String;//Адрес, на который будем отправлять фотографию, чтобы загрузить в профиль public var urlofphoto:String;//адрес аватара public var api_id:Number; public var viewer_id:Number; public var sid:String; public var secret:String; public var changephotobtn:VKButton; //обычная кнопка public var profilephoto:Bitmap; //фотография пользователя public var brr:ByteArray; //получаем flashvars public var flashVars:Object = stage.loaderInfo.parameters as Object; //инициализация public var VK:APIConnection = new APIConnection(flashVars); public function Main() { //переменные приложения api_id = flashVars['api_id']; viewer_id = flashVars['viewer_id']; sid = flashVars['sid']; secret = flashVars['secret']; //получаем адрес, на который будем отправлять картинку VK.api('photos.getProfileUploadServer', {}, geturl, onError); } private function geturl(data:Object):void { urlforpost = data.upload_url; //получаем фотографию пользователя с профиля VK.api('getProfiles', {uids:viewer_id,fields:'photo_big'}, geturlofprofilephoto, onError); } private function geturlofprofilephoto(data:Object):void { urlofphoto = data[0]['photo_big']; //загружаем фотографию var loaderContext:LoaderContext = new LoaderContext(); loaderContext.checkPolicyFile = true loader.load(new URLRequest(urlofphoto),loaderContext); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,dobtn); } function dobtn(e:Event):void { //помещаем фотографию на сцену, используя BitMapData. var bmp:Bitmap = loader.content as Bitmap; profilephoto = new Bitmap(bmp.bitmapData); addChild(profilephoto); addChild(img);//небольшой костыль, просто могут возникнуть проблемы с "наложением" картинок друг на друга.. //позволяем перетаскивать картинку на профильную фотографию.. img.addEventListener(MouseEvent.MOUSE_DOWN, sdrag); function sdrag(e:MouseEvent):void { img.startDrag(); } img.addEventListener(MouseEvent.MOUSE_UP, stdrag); function stdrag(e:MouseEvent):void { img.stopDrag(); } changephotobtn = new VKButton("Изменить аватар"); // при нажатии на эту кнопку, фотография сохранится в профиль. changephotobtn.x = 400; addChild(changephotobtn); //сохраняем changephotobtn.addEventListener(MouseEvent.CLICK,save); } function save(e:MouseEvent):void { var raw:BitmapData = new BitmapData(loader.width,loader.height);//"фотографируем" область где находится аватар, чтобы понять как расположена картинка raw.draw(stage); brr = PNGEncoder.encode(raw); changephoto(urlforpost,brr); } public function changephoto(Url:String,brr:ByteArray):void { var mll:MultipartURLLoader = new MultipartURLLoader(); mll.addFile(brr, "file.jpg", "photo", 'image/jpg'); mll.load(Url); mll.addEventListener(Event.COMPLETE, loadComplete); } function loadComplete(e:Event):void { var loader:URLLoader = MultipartURLLoader(e.currentTarget).loader; var response = JSON.decode(loader.data); consol.text = response.photo; VK.api('photos.saveProfilePhoto', {server:response.server,photo:response.photo,hash:response.hash}, savephoto, onError); } private function savephoto(data:Object):void { trace("OK"); } private function onError(data:Object):void { consol.text = data.error; } } }
Второй шаг
Теперь нужно создать .fla фаил назвать redaktor.fla и сохранить в папке changephoto.
В этом файле на сцену поместить следующие объекты:динамическое текстовое поле и назвать его consol и любую картинку, которую пользователи будут ставить на аватар и назвать ее img.
В папку change photo, поместить папку vk, которую можно найти в исходнике.
Все, компилируем и заливаем в Контакт.
Настройки приложения: включено и видно всем, без использования контейнера.
Само приложение можно увидеть здесь: http://vk.com/app3102056
Исходник: http://webfile.ru/6097041
p.s помогите разработать шахматный движок: http://flapps.ru/forum/topic5644.html