Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Создание класса MovieClip из изображения в библиотеке (http://www.flasher.ru/forum/showthread.php?t=140715)

ikozlov 06.06.2010 10:32

Создание класса MovieClip из изображения в библиотеке
 
Имею в библиотеке около 200 изображений, хочу вставить их иконками в List. Для этого мне нужно сделать из изображений мувиКлипы и присвоить классам имена. В связи с этим на сцене будет "помойка". Можно ли сделать эту операцию кодом?

silin 07.06.2010 01:02

по 'сделать из изображений мувиКлипы', пощупай такой вариант:
Код AS1/AS2:

import flash.display.BitmapData;
 
//bmp0, bmp1 - linkage ID графики в библиотеке
var mc0:MovieClip = createImageMC("bmp0");
var mc1:MovieClip = createImageMC("bmp1");
mc1._y = 100;
 
/**
 * создает мувик с битмапом из библиотеки на борту
 * @param bmpID                        linkage ID
 * @param smoothing                сгаживание битмапа (актуально, если предполагается трансформация мувика)
 * @return                        movieClip
 */

function createImageMC(bmpID:String, smoothing:Boolean):MovieClip {
 
        var depth:Number = getNextHighestDepth();
        var name:String = 'clip'+depth;
 
        var mc:MovieClip = createEmptyMovieClip(name, depth);
        var bmd:BitmapData = BitmapData.loadBitmap(bmpID);
        mc.attachBitmap(bmd,0,null,smoothing);
 
        return mc;
}

насчет 'присвоить классам имена' не понятно ни разу, попробуй сформулировать иначе

Добавлено через 1 час 0 минут
да, это я почему-то решил, что речь о AS2..
если это AS3, то можно попробовать использовать библиотечные Id самих картинок, а в CellRenderer-е переписать методы вывода иконки

Код AS3:

var list:List = new List();
list.setStyle("cellRenderer", MyCellRenderer);
addChild(list);
//bmp0, bmp1 - классы графики в библиотеке
list.addItem( { label:"first", icon: bmp0 } );
list.addItem( { label:"second", icon: bmp1 } );

Код AS3:

public class MyCellRenderer extends CellRenderer
{
 
        override protected function drawIcon () : void
        {
                var iconClass:Class = data.icon as Class;
                var icon:Bitmap = new Bitmap(new iconClass(0, 0));
                addChild(icon);
 
        }
}

правда в этом примере лайблы оказываются не на месте,
надо подумать и о них, видимо в drawLayout, или еще где- сходу и не поймешь, желания ковыряться тоже никаго (не пользуюсь этим добром)

за что мы все так горячо и любим 'родные' компоненты, так это все эти удобства настройки, ну за некапризность тоже, канеш :)


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

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