Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   BitmapData (http://www.flasher.ru/forum/showthread.php?t=136144)

lubko 10.02.2010 21:27

BitmapData
 
Код AS3:

var request:URLRequest = new URLRequest('img1.JPG');
var loader:Loader = new Loader();
loader.load(request);
 
var myBitmap:BitmapData = new BitmapData(loader.width, loader.height, false);
 
myBitmap.draw(loader);

ArgumentError: Error #2015: Недопустимые данные BitmapData.

Добавлено через 8 минут
ArgumentError — ширина и (или) высота недействительны (меньше или равны нулю, либо больше 2880)

ну да trace(loader.height,loader.width); и показал нули

udaaff 10.02.2010 21:37

Загрузки надо дождаться сначала. Event.COMPLETE в помощь.

lubko 10.02.2010 21:39

Код AS3:

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderIO_ERROR);
function loaderIO_ERROR(event:IOErrorEvent){trace('error!!!!');};

все чисто..

Добавлено через 37 секунд
о понятно. спс

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

var dp:DataProvider = new DataProvider();
var AAA:MovieClip;
var request:URLRequest = new URLRequest('img1.JPG');
var loader:Loader = new Loader();
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCOMPLETE);
function loaderCOMPLETE(event:Event){
        var myBitmap:BitmapData = new BitmapData(loader.width,loader.height, true, 0x00FFFFFF);
        myBitmap.draw(loader);
        AAA.graphics.beginBitmapFill(myBitmap);// вылетает здесь:(
        AAA.graphics.drawRect(100, 50, 200, 90);
        AAA.graphics.endFill();
        dp.addItem( {label:'image 1', source:AAA} );
        myList.dataProvider=dp;
};

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at FunnyRaper/loaderCOMPLETE()

вообще мне надо создать TileList с картинками. может как то легче можна, а не отрисовывать их?

nOobCrafter 10.02.2010 22:34

lubko а хелп посмотреть, не?
Код AS3:

                private function loadPic(path:String):void
                {
                        _loader = new Loader();
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPicLoadHandler);                // ожидаем загрузку
                        _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);// или ошибку
                        _loader.load(new URLRequest(path));
                }
 
                private function onIOErrorHandler(e:IOErrorEvent):void { }
                private function onPicLoadHandler(e:Event):void
                {
                        _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPicLoadHandler);        // убиваем листенер загрузки
                        _loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);// и ошибки
 
                        _picture = new Bitmap((e.target.content as Bitmap).bitmapData.clone(), 'auto', true);
                        addChild(_picture);                                                                                                                                        // добавялем картинку в область видимости
                }


lubko 10.02.2010 23:27

nOobCrafter, спасибо но bitmap уже давно вышло загрузить.

Код AS3:

AAA.graphics.beginBitmapFill(myBitmap);// вылетает здесь:(
        AAA.graphics.drawRect(100, 50, 200, 90);
        AAA.graphics.endFill();

я ведь говорю что не выходит прорисовать его на MovieClip

dimarik 10.02.2010 23:55

Цитата:

Сообщение от lubko (Сообщение 885425)
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at FunnyRaper/loaderCOMPLETE()

По идее не должно вылетать: синтаксис верный. Если, конечно, вылетает в указанной Вами строчке. В чем я сомневаюсь.

udaaff 11.02.2010 00:15

lubko, где у вас AAA создается?

lubko 11.02.2010 00:37

Код AS3:

 
var AAA:MovieClip;
AAA=new MovieClip();
var loader:Loader = new Loader();
var dp:DataProvider = new DataProvider();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPicLoadHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
 
 
loader.load(new URLRequest('img1.JPG'));
 
myTileList.dataProvider=dp;
myTileList.labelField = "src";
myTileList.setStyle('cellRenderer', CellRenderer);   
myTileList.iconField = "iconSrc";
 
function onPicLoadHandler(event:Event){
        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onPicLoadHandler);        // убиваем листенер загрузки
        loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);// и ошибки
 
        var myBitmap:BitmapData = new BitmapData(loader.width,loader.height, true, 0x00FFFFFF);
        myBitmap.draw(loader);
        AAA.graphics.beginBitmapFill(myBitmap);
        AAA.graphics.drawRect(0,0,loader.width,loader.height);
        AAA.graphics.endFill();
        dp.addItem({label:'AAA', iconSrc:AAA });
 
};
function onIOErrorHandler(e:IOErrorEvent):void {trace('ololo !!!! error!!'); }

работает. в чем был баг так и не понял, но я рад) вот только как бы переделать чтобы много можна было добавить. для каждого свой MovieClip?

dimarik 11.02.2010 01:07

Цитата:

Сообщение от lubko (Сообщение 885470)
работает. в чем был баг так и не понял

Вот в этом
Код AS3:

AAA=new MovieClip();

Его у Вас раньше не было.
Я было подумал что на отсутствие myBitmap ругалось.

etc 11.02.2010 08:00

Название темы не отражает сути вопроса.


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

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