Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Создание BitmapData из картинки, загруженной через XML (http://www.flasher.ru/forum/showthread.php?t=140536)

Ape4atka 01.06.2010 20:29

Создание BitmapData из картинки, загруженной через XML
 
Здравствуйте!
Ситуация следующая:
Есть картинки, загруженные по XML и есть функция, которая принимает в качестве аргумента объект BitmapData.
Вопрос: как создать BitmapData из имеющихся картинок?
Спасибо.

mooncar 01.06.2010 20:41

Смотрите метод BitmapData.draw
Создайте новую битмапу. Отрисуйте с помощью этого метода в нее мувик, куда загрузили картинку. Выгрузите мувик, он больше не нужен. Всё, у вас в памяти теперь есть битмапа с этой картинкой.

Ape4atka 01.06.2010 22:13

Спасибо, принцип понял, для проверки написал следующий код:
Код AS1/AS2:

 _global.btmp = new BitmapData(95, 95);
 
_root.createEmptyMovieClip("cont_mc", _root.getNextHighestDepth());
_root.createEmptyMovieClip("cont2_mc", _root.getNextHighestDepth());
_root.cont_mc.loadMovie(_global.costPrevSmall_array[0]);
_global.btmp.draw(cont_mc);
removeMovieClip(_root.cont_mc);
_root.cont2_mc.attachBitmap(_global.btmp, 0);

Показывает белый квадратик без картинки.
Что я упустил?

udaaff 01.06.2010 22:17

А загрузки кто дожидаться будет? MovieClipLoader в помощь.

Ape4atka 01.06.2010 22:41

mooncar
udaaff
Спасибо огромное, весь вечер убил на эту тему и наконец, благодаря вам, все заработало!!)))

regman 17.01.2011 11:13

Есть проблемка. С загруженного файла XML мы имеем пути к файлам arFiles и их описания arNames. Я пробую потом по этим путям их забитмапить в массив bmpArray прорисовывая (Draw) через главный контейнер holder (пробовал грузить в новосозданный контейнер tempMC - но тогда пр показе мувика вообще ничего не показывает). И после загрузки этих 5-ти файликов, нужно вывести (тоесть зааттачить с массива) первую картинку и ее описания в главный контейнер.

Проблема в том, что XML и его данные нормально заносятся в массивы. Но вот почему-то при показе мувика - только последняя картинка выводится, но с первым описанием.
Код AS1/AS2:

import flash.display.BitmapData;
 
var arNames:Array = [];
var arFiles:Array = [];
var bmpArray:Array = [];
var imgIndex:Number = 0;
var FilesCount:Number = 0;
 
var xmlData:XML = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load('descr.xml');
 
var bmpData:BitmapData = new BitmapData(500, 375);
var tempMC:MovieClip = _root.CreateEmptyMovieClip("tempMC", 0);
 
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
loader.addListener(listener);
listener.onLoadInit = function (target_mc:MovieClip)
{
        holder._height = 375;
        holder._width = 500;
        bmpData.draw(holder);
        bmpArray[imgIndex] = bmpData;
        if (imgIndex == FilesCount-1)
        {
                _root.holder.attachBitmap(bmpArray[0], 0);
                _root['Display'].text = arNames[0];
                imgIndex = 0;
        }
};
 
function loadXML (success:Boolean)
{       
        if (success)
        {
                var node:XMLNode = this.firstChild ;
                var total:Number = node.childNodes.length ;       
                for( i = 0; i < total; i++)
                {
                        var fName:String = node.childNodes[i].attributes['name'];
                        var fFile:String = node.childNodes[i].attributes['file'];
                        arNames[i] = fName;
                        arFiles[i] = fFile;
                        FilesCount = arFiles.length;
                };
                for (i = 0; i <= FilesCount-1; i++)
                {
                        imgIndex = i;
                        loader.loadClip(arFiles[i], holder);
                };
        };
};
 
nextPic.onPress = function ()
{
        if (imgIndex <= FilesCount-1)
        {
                imgIndex++;
                _root.holder.attachBitmap(bmpArray[imgIndex]);
                _root['Display'].text = arNames[imgIndex];
        }
};


regman 20.01.2011 13:44

Кто-то сможет указать на мои ошибки?


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

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