![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2011
Сообщений: 221
|
Делаю скриншот, пытаюсь отправить его на сервер
public function makeScreenshot(e:MouseEvent):void { var raw :BitmapData, brr :ByteArray; raw = new BitmapData(stage.stageWidth, stage.stageHeight); raw.draw(stage); brr = PNGEncoder.encode(raw); mpLoader = new MultipartURLLoader(); mpLoader.addFile(brr, "screenshot.png", "photo", 'image/jpeg'); mpLoader.addEventListener(Event.COMPLETE, WallSavePhotoPost); mpLoader.load(url); trace('Дошли досюда значит заливается') } Security.allowDomain("*"); var loaderContext:LoaderContext = new LoaderContext(); loaderContext.checkPolicyFile = true; Цитата:
|
|
|||||
|
Регистрация: May 2011
Сообщений: 221
|
Mukon Не, ФайлРеференс не пойдет, мне нужно миновать процедуру сохранения по винт. Делаю приложение для вконтакте, нужно сразу по нажатию сделать пост на стену пользователя.
-De- Не очень понял о чем идет речь. Нашел этот самый доверенный каталог, добавил в файл настроек директорию, скомпилировал. Стало еще круче Цитата:
Цитата:
|
|
|||||
|
.
|
-De- вам дал ссылку почитать мои нравоучения.
Фразы "приложение для вконтакте" и "нашел этот самый доверенный каталог" не совместимы в принципе. Первая относится к песочнице remote, а вторая к песочнице local-trusted. По поводу Security Error #2122 при BitmapData#draw(): укажите Судя по http://cs11152.userapi.com/crossdomain.xml в нем есть <allow-access-from domain="*.vk.com" to-ports="80"/>, который разрешает пользоваться пикселями изображений при запросе с этих поддоменов. Или воспользуйтесь советом. Security.allowDomain("*") никакого отношения к разрешению распространителя, а тем более к изображениям не имеет. Адью! |
|
|||||
|
Регистрация: May 2011
Сообщений: 221
|
И все же нет
так увы и не дал должного результата/ dimarik Смотрю ваш блог вроде бы делаю все тоже самое, но никакого рабочего результата это так и не дает. Что занятно VK.api('friends.getAppUsers', {}, gotUsers, errorGetUsers); VK.api("photos.getWallUploadServer", {}, responseFromServer, onError); Добавлено через 24 часа 58 минут Еще раз просмотрел. Наврал, не заметил Цитата:
Я так понял, что косяк возникает из-за того, что на сцену загружены картинки с аватарками пользователей. Как можно обойти? ЛоадерКонтекст перековырял как только смог. |
|
|||||
|
.
|
Вот минимальный пример, который работает у меня. Публикация вконтакте — "без использования контейнера".
/////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2012. Dimarik // /////////////////////////////////////////////////////////////////////////////// package { import flash.display.DisplayObject; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.ErrorEvent; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.net.URLRequest; import flash.system.LoaderContext; /** * @author Dimarik * @version 1.0 * @langversion 3.0 * @playerversion 9.0 * */ [SWF(width="100", height="100", frameRate="12", backgroundColor="#3A4044")] public class VKImageLoading extends Sprite { //------------------------------------------------------------------------- // // Constructor // //------------------------------------------------------------------------- public function VKImageLoading() { super(); super.addEventListener(Event.ADDED_TO_STAGE, this.initialize, false, int.MAX_VALUE); } //------------------------------------------------------------------------- // // Private methods // //------------------------------------------------------------------------- private function initialize(event:Event):void { super.stage.scaleMode = StageScaleMode.NO_SCALE; super.stage.align = StageAlign.TOP_LEFT; const request: URLRequest = new URLRequest('http://cs11152.userapi.com/u154412759/b_34d43610.jpg'); const loader: Loader = new Loader(); const context: LoaderContext = new LoaderContext(true); this.dealLoaderInfoListeners(loader.contentLoaderInfo.addEventListener); loader.load(request, context); super.addChild(loader); } private function dealLoaderInfoListeners(method:Function):void { method.call(null, Event.COMPLETE, this.handler_loader); method.call(null, IOErrorEvent.IO_ERROR, this.handler_loader); method.call(null, SecurityErrorEvent.SECURITY_ERROR, this.handler_loader); } //------------------------------------------------------------------------- // // Events handlers // //------------------------------------------------------------------------- private function handler_loader(event:Event):void { const li:LoaderInfo = event.target as LoaderInfo; this.dealLoaderInfoListeners(li.removeEventListener); const loader:Loader = li.loader; if (event is ErrorEvent) throw event.toString(); else // выбрасывает SecurityError, если доступ запрещен политиками crossdomain.xml const content:DisplayObject = loader.content; } } } |
|
|||||
|
Регистрация: May 2011
Сообщений: 221
|
Есть, нашел косяк, большущее спасибо ) Пропустил, что контекст надо указывать во время load и вообще не в тот класс смотрел ) Еще раз тысячу благодарностей )
Чтобы не потерялось залью сюда, вдруг кому пригодится ) Последний раз редактировалось Фенёк; 12.03.2012 в 11:45. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|