PDA

Просмотр полной версии : Помогите подгрузить картинку при помощи BitmapData


Tochilin
24.02.2008, 23:50
Привет.
Никак не могу разобраться с BitmapData.
Задача: Подгрузить из XML картинки и расположить их по кругу (типа как на циферблате часов - картинки вместо цифр либо как на рулеке в казино, не важно)

Я сделал подгрузку из XML - и каждую картинку повернул на определённый градус, в зависимости от количестка картинок. Так вот - они естественно при повороте потеряли в качестве и стали с гребенкой. Нужно использовать BitmapData - как?
Напишите плз код - если не трудно - с комментариями...

iNils
25.02.2008, 00:37
http://www.flasher.ru/forum/showthread.php?t=103586

Tochilin
25.02.2008, 10:33
Благодарю.

Tochilin
25.02.2008, 13:25
Остался вопросик. Я разобрался как грузится картинка при помощи BitmapData.
Одну картинку подгрузил. Но Мне нужно несколько картинок подгрузить. (ну 3 к примеру, не важно, я буду брать их из XML)

Как мне это сделать.
Вот исходный код. Куда впихнуть цикл?

вот код
import flash.display.BitmapData;

var src:Array = Array("04.jpg", "05.jpg", "06.jpg");
var container:MovieClip=createEmptyMovieClip(container, getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
var loadListener:Object = new Object();


loadListener.onLoadInit = function(target_mc:MovieClip) {
trace(target_mc);
var tmpBmp:BitmapData = new BitmapData (target_mc._width,target_mc._height);
tmpBmp.draw(target_mc);
target_mc.removeMovieClip();
var bmp_mc:MovieClip = createEmptyMovieClip(bmp_mc, getNextHighestDepth());
bmp_mc.attachBitmap(tmpBmp, getNextHighestDepth(), "auto", true);
};

mcLoader.addListener(loadListener);
mcLoader.loadClip(src[0], container);

Olegg
25.02.2008, 13:43
mcLoader.loadClip(src[0], container); - вот это пихай в цикл

Tochilin
25.02.2008, 13:54
Нет - не получается. Дело в том что у нас вначале создаётся мувик в который грузится картинка var container:MovieClip=createEmptyMovieClip(container, getNextHighestDepth());
а потом он удаляется, при первой же итерации цикла
target_mc.removeMovieClip();

Получается нужно в цикл запихнуть ещё и
var container:MovieClip=createEmptyMovieClip(container, getNextHighestDepth()); Так?
Ваще как мне сделать много мувиков - ну то есть продублировать в цикле что ли, чтобы в итоге все картинки из массива появились на сцене..

Olegg
25.02.2008, 13:59
а.ну тогда да.Не,ничо дублировать не надо,в параметрах цикла задай сколько у тебя картинок,столько раз и выполняй цикл.

Tochilin
25.02.2008, 14:08
задал в цикле - но проблема не в этом. У меня не будут отображаться ВСЕ картинки, если я не буду создавать НОВЫЕ BitmapData для каждой картинки. Либо новые мувики надо создавать при каждой итерации цикла.

То есть я к тому что проблема не в том сколько раз выполнять цикл - а в том что нужно как то дублировать мувики, чтобы каждая след. подгружаемая картинка отображалась в НОВОМ мувиклипе.

Вот исходник.

Olegg
25.02.2008, 14:39
ну так правильно,несколько раз создаёшь мувики и задаёшь каждому новое имя и смещение по координатам.Как-то так..
for(i:Number=0;i<3;i++) {
var clip:MovieClip = this.createEmptyMovieClip ("pic_mc"+i,this.getNextHighestDepth());
with(clip){
_x +=10;
}
}

Fernando Costa
25.02.2008, 15:05
не учите человека старому коду
with(clip){
_x +=10;
}==
clip._x +=10;

Tochilin
25.02.2008, 15:18
var clip:MovieClip = this.createEmptyMovieClip ("pic_mc"+i,this.getNextHighestDepth());
А эта строчка означает что с мувике clip - создастся ещё один мувик "pic_mc"+i. Так?

Хорошо - а аттачить BitmapData к чему к "pic_mc"+i??? или в clip???
Блин - я уже запутался - никто не мог бы подправить мой исходник?

Исходник

Olegg
25.02.2008, 17:36
Подправить не могу,потому как на работе,у меня тут своих исходников завались :)

это значит,что создаются мувики "pic_mc1","pic_mc2" и т.д..до i.
clip - это переменная типа MovieClip .
аттачить надо туда.