Просмотр полной версии : программно создать вложенный мувиклип
создаю мувиклип кодом
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
хочу создать вложенный в него мувиклип, без загрузки картинки все работает,
но с картинкой следующий код не работает:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
так тоже не работает:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
подскажите плиз, как создать внутренний мувиклип, если во внешний надо загрузить картинку
Juice_Green
03.12.2009, 21:54
загрузка изображения происходит позднее, чем создание вложенного клипа, соотвественно все содержимое reiks1 тут же стирается
загрузка изображения происходит позднее, чем создание вложенного клипа, соотвественно все содержимое reiks1 тут же стирается
...
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
...
вложенный мувиклип создается позже загрузки изображения
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
Добавлено через 18 минут
попробовал явно развести загрузку изображения и создания вложенного мувиклипа
код в руте: var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
код на кнопке
on (press) {
_root.reiks1.attachMovie('qwerty','hitarea',getNextHighestDepth());
}
не работает, без использования loadClip все работает (смотрю в debugger)
не работал до этого со свойством loadClip объекта MovieClipLoader()
возможно, его использование исключает методы объекта MovieClip() :wacko:
Если у вас одна строчка идет ниже, чем другая, то это не значит, что она выполнится позже.
Вы о методе onLoadInirt слышали? Похоже, что нет. Прочитайте, иначе смысла использовать MovieClipLoader нет. Как прочитаете, вам все сразу станет ясно.
Вам хинт: пропишите создание вложенного контента внутри onLoadInit.
Вам хинт: пропишите создание вложенного контента внутри onLoadInit.
спасибо, прочитаю обязательно
проблема в том что вынести отдельно не уверен что получится, потому как создается в нескольких циклах 40 мувиклипов с разными картинками (и динамическимим именами), и вложенный мувик хотел создавать именно при создании мува, являющегося для него контейнером
Добавлено через 4 минуты
хотя обязательно попробую :)
Все вышеперечисленное спокойно решается, если грамотно использовать методы MCL и циклы.
Главное для вас сейчас - осознать, для чего придуман тот или иной метод MCL, и особенно - самый важный для вас сейчас onLoadInit.
Особое внимание уделите аргументу target:MovieCLip функции, которая на него назначается.
работающий код
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
var listener:Object = {};
mcLoader.addListener(listener);
listener.onLoadInit = function(reiks:MovieClip):Void {
reiks.createEmptyMovieClip('hitarea',getNextHighestDepth());
};
Ага, только имейте ввиду - у вас аргумент reiks внутри onLoadInit только ссылается на reiks, а не есть сам reiks. То есть вот так тоже будет работать:
listener.onLoadInit = function(mc:MovieClip):Void {
mc.createEmptyMovieClip('hitarea', mc.getNextHighestDepth());
};
И как видите, следующую максимальную свободную глубину нужно брать именно внутри клипа, в который был загружен контент, у вас этого не было.
Добавлено через 3 минуты
В качестве объекта слушателя можно использовать сам текущий таймлайн, дабы не засорять ролик:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
mcLoader.addListener(this);
this.onLoadInit = function(target_mc:MovieClip):Void {
target_mc.createEmptyMovieClip('hitarea', target_mc.getNextHighestDepth());
};
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.