Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.12.2009, 20:40
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 1  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
Question программно создать вложенный мувиклип

создаю мувиклип кодом
Код AS1/AS2:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
хочу создать вложенный в него мувиклип, без загрузки картинки все работает,
но с картинкой следующий код не работает:
Код AS1/AS2:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
так тоже не работает:
Код AS1/AS2:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
подскажите плиз, как создать внутренний мувиклип, если во внешний надо загрузить картинку

Старый 03.12.2009, 21:54
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 2  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
загрузка изображения происходит позднее, чем создание вложенного клипа, соотвественно все содержимое reiks1 тут же стирается

Старый 03.12.2009, 22:17
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 3  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
Цитата:
Сообщение от Juice_Green Посмотреть сообщение
загрузка изображения происходит позднее, чем создание вложенного клипа, соотвественно все содержимое reiks1 тут же стирается
Цитата:
Сообщение от Agni Посмотреть сообщение
...
Код AS1/AS2:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
...
вложенный мувиклип создается позже загрузки изображения
Код AS1/AS2:
var hitarea:MovieClip = reiks.createEmptyMovieClip('hitarea', getNextHighestDepth());
Добавлено через 18 минут
попробовал явно развести загрузку изображения и создания вложенного мувиклипа

код в руте:
Код AS1/AS2:
var reiks:MovieClip = createEmptyMovieClip('reiks1', getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.loadClip('images/r1.jpg','reiks1');
код на кнопке
Код AS1/AS2:
on (press) {
	_root.reiks1.attachMovie('qwerty','hitarea',getNextHighestDepth());
}
не работает, без использования loadClip все работает (смотрю в debugger)

не работал до этого со свойством loadClip объекта MovieClipLoader()
возможно, его использование исключает методы объекта MovieClip()

Старый 03.12.2009, 22:52
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Если у вас одна строчка идет ниже, чем другая, то это не значит, что она выполнится позже.
Вы о методе onLoadInirt слышали? Похоже, что нет. Прочитайте, иначе смысла использовать MovieClipLoader нет. Как прочитаете, вам все сразу станет ясно.

Вам хинт: пропишите создание вложенного контента внутри onLoadInit.

Старый 03.12.2009, 23:17
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 5  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
Цитата:
Сообщение от mooncar Посмотреть сообщение
Вам хинт: пропишите создание вложенного контента внутри onLoadInit.
спасибо, прочитаю обязательно

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

Добавлено через 4 минуты
хотя обязательно попробую

Старый 03.12.2009, 23:39
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Все вышеперечисленное спокойно решается, если грамотно использовать методы MCL и циклы.
Главное для вас сейчас - осознать, для чего придуман тот или иной метод MCL, и особенно - самый важный для вас сейчас onLoadInit.
Особое внимание уделите аргументу target:MovieCLip функции, которая на него назначается.


Последний раз редактировалось mooncar; 03.12.2009 в 23:41.
Старый 04.12.2009, 13:36
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 7  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
работающий код
Код AS1/AS2:
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());
};

Старый 04.12.2009, 14:53
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ага, только имейте ввиду - у вас аргумент reiks внутри onLoadInit только ссылается на reiks, а не есть сам reiks. То есть вот так тоже будет работать:
Код AS1/AS2:
listener.onLoadInit = function(mc:MovieClip):Void  {
	mc.createEmptyMovieClip('hitarea', mc.getNextHighestDepth());
};
И как видите, следующую максимальную свободную глубину нужно брать именно внутри клипа, в который был загружен контент, у вас этого не было.

Добавлено через 3 минуты
В качестве объекта слушателя можно использовать сам текущий таймлайн, дабы не засорять ролик:
Код AS1/AS2:
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());
};


Последний раз редактировалось mooncar; 04.12.2009 в 14:58.
Старый 05.12.2009, 00:14
Agni вне форума Посмотреть профиль Отправить личное сообщение для Agni Найти все сообщения от Agni
  № 9  
Ответить с цитированием
Agni

Регистрация: Apr 2009
Сообщений: 141
спасибо


Создать новую тему Ответ Часовой пояс GMT +4, время: 10:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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