Форум Flasher.ru

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

xpymbl4 23.04.2010 14:09

ByteArray фотографии для публикации на стене
 
Использую класс, представленный здесь:
http://code.google.com/p/v-kontakte/...ostUploader.as
В метод upload передается параметр photo.
Моя задача - загружать в photo мувиклип (_mc), лежайщий на сцене.
Делаю так:
Код AS3:

var bitmap:BitmapData = new BitmapData (_mc.width, _mc.height);
bitmap.draw(_mc);
var pngEncoder:PNGEncoder = new PNGEncoder();                       
photo = pngEncoder.encode(bitmap);

И в результате загрузки сервер отдает callback.photo только в том случае, если в _mc нет ничего кроме простого заполненного Shape. Если в _mc много всяких объектов + например jpeg картинка, то уже не работает.
Подскажите пожалуйста, как вы формируете из мувиклипа красивую качественную картинку, отправляемую на стену.

udaaff 23.04.2010 16:06

То, что у вас в битмап отрисовывается, то и должно отправляться, т.е. проверьте, что именно рисуется. Премудростей тут, вроде как, никаких нету.

Mur4ik 23.04.2010 16:37

Может проблема в использовании PNGEncoder, если используете класс от адоба, то encode это статический метод и экземпляр класса создавать для этого не нужно. Т.е достаточно написать
Код AS3:

photo = PNGEncoder.encode(bitmap);


xpymbl4 23.04.2010 17:22

_mc содержит подгруженное изображение.
Не работает draw.
Читаю форум. Ищу ответ. Спасибо :)

Добавлено через 25 минут
Может кто уже формировал картинку из мувиклипа, в котором содержится подгруженное изображение?
Доступа к файлу политики, откуда грузится изображение - нет.
Существует ли выход из сложившейся ситуации?

Mur4ik 23.04.2010 21:35

Существует.

Абстрактный пример
Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;
        import flash.system.ApplicationDomain;
        import flash.system.LoaderContext;
 
        public class FuckCrossDomain extends Sprite
        {
                private var _loader:Loader;
 
                public function FuckCrossDomain()
                {
                        if (stage) initInstance(null);
                        else addEventListener(Event.ADDED_TO_STAGE, initInstance);
                }
 
                private function initInstance(event:Event):void
                {
                        _loader = new Loader();
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler);
 
                        _loader.load( new URLRequest("http://ссылка/на/картинку.jpg") );
                }
 
                private function loader_completeHandler(event:Event):void
                {
                        _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loader_completeHandler);
 
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_loadBytesCompleteHandler);
                        _loader.loadBytes(_loader.contentLoaderInfo.bytes, new LoaderContext(false, ApplicationDomain.currentDomain));
                }
 
                private function loader_loadBytesCompleteHandler(event:Event):void
                {
                        _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loader_loadBytesCompleteHandler);
 
                        // и вот туту уже можно с _loader или _loader.content рисовать в битмапдату без
 
                        var bmd:BitmapData = new BitmapData(_loader.width, _loader.height, true, 0);
                        bmd.draw(_loader.content);
 
                        addChild( new Bitmap(bmd) );
                }
        }
}



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

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