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

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

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

Регистрация: Nov 2007
Сообщений: 10
Question массовое создание MovieClip

Подскажите пожалуйста как можно сделать следующее....
При загрузке Флэш клипа, в Layer'e Создается например 6 одинаковых MovieClip'ов из Библеотеки, с той разницей что в каждый из них подгружаются разные Картинки.. Так вот после того как они созданны, они должны далее заменять MovieClip'ы в другом Layere'е


Код:
_pageOrder2 = new Array(18);
pos = true;
_pageOrder2[0] = _level2.attachMovie("page0","pic"+0);
_pageOrder2[1] = _level2.attachMovie("page1","pic"+1);
_pageOrder2[2] = _level2.attachMovie("page2","pic"+2);
for(i=3;i<pageOrder2.length-4;i++){
	pos = !pos;
	if(pos){
		//pageOrder2[i].createEmptyMovieClip("")
		_pageOrder2[i] = _level2.attachMovie("page4","pic"+i);
		_pageOrder2[i].photo.loadMovie(pagePhoto[i-3]); 
	} else{
		_pageOrder2[i] = _level2.attachMovie("page5","pic"+i);
		_pageOrder2[i].photo.loadMovie(pagePhoto[i-3]);
	}
	
}
_pageOrder2[15] = _level2.attachMovie("page15","pic"+15);
_pageOrder2[16] = _level2.attachMovie("page16","pic"+16);
_pageOrder2[17] = _level2.attachMovie("page17","pic"+17);

on(Определенное событие){
page0.page1.page2.attachMovie(_pageOrder2[n],"pic");
}
Кратко: Главным образом не понятно как создать Массив MovieClip'ов
И потом заменять ими другие MovieClip'ы в другом Layer'e

Старый 29.11.2007, 17:01
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 2  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
1.
Код:
var arr1:Array = new Array();
arr1.push(mc);
2. Загружай клипы на определённую глубину. а при новом аттаче мувики будут автоматически заменяться.

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

Регистрация: Nov 2007
Сообщений: 10
Цитата:
Сообщение от telit
1.
Код:
var arr1:Array = new Array();
arr1.push(mc);
2. Загружай клипы на определённую глубину. а при новом аттаче мувики будут автоматически заменяться.
А можно поподробней про глубину ???

Старый 29.11.2007, 18:56
Blajimir вне форума Посмотреть профиль Отправить личное сообщение для Blajimir Найти все сообщения от Blajimir
  № 4  
Ответить с цитированием
Blajimir

Регистрация: Nov 2007
Сообщений: 10
И все таки мне не совсем понятно почему после attach'a в добавленный элемент массива пуст?
Код:
__qArr.push(mc.attachMovie("page","pic"+i,1));

Старый 29.11.2007, 18:56
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Попробую обьяснить:
В самом флэше есть layer-ы, слои, в которых ты что нибудь рисуешь. При компиляции мувика, слоев нету, они все сливаются в 1 слой, генерируется мувик _root. Он автоматически занимает глубину 0.
//извините за убожеское "генерируется мувик _root" - это чтобы понятнее было.

Теперь создадим внутри _root`a ещё 1 мувиклип
Код:
attachMovie("page0","pic"+0);
Из библиотеки хапаем page0, даем ему имя pic0 (зачем ты писал "pic"+0 - незнаю)
Откровенно говоря, я не понимаю почему это работает.
синтаксис такой:
Код:
attachMovie(linkID,newName, DEPTH);
Что такое depth? - это глубина, туда грузяться мувики при их создании.
Скажем, выполним такой код:
Код:
attachMovie("mc1","mc1", 1);
attachMovie("mc2","mc2", 2);
Mc 2 оказжеться выше чем mc1 (т.е. mc2 будет виден полностью, а mc1 - частично, т.к. mc2 накроет mc1)
Это произошло потому, что глубина mc2 выше, чем глубина мс1.

Теперь другой код:
Код:
attachMovie("mc1","mc1", 2);
attachMovie("mc2","mc2", 1);
Глубина mc1=2, mc2=1 ==> mc1 будет на переднем плане.
Код:
attachMovie("mc1","mc1", 1);
attachMovie("mc2","mc2", 1);
А это то, о чем сказал telit, создали 2 мувиклипа на 1 глубину. Теперь mc1 вообще не существует, его глубину просто перекрыли. Другими словами, если глубина - это квартира, то в квартиру мы заселяем жильцов - movie clip`ы. Все что мы видим на сцене заселено по квартирам.
В квартире #1 жил мс1, но его выселели и поселили мс2. Теперь мс1 вообще нет, а мс2 появился вместо него.
Вот что такое глубина.
Нужные вещи:
Код:
mc.getNextHighestDepth();
Например:
Код:
_root.getNextHighestDepth();
возвращает следуйщую НАИБОЛЬШУЮ величину.
Т.е. скажем
Код:
for (var i:Number=0; i<=20; i++) attachMovieClip("mc","mc"+i,_root.getNextHighestDepth());
Будет приделывать мувики, при этом ни 1 мувик не удалиться.
Код:
mc.removeMovieClip(mc)
Пример:
Код:
_root.removeMovieClip("mc");
Удалят мувиклип с концами, а с ним все его методы и глубину.
ЗЫ если были мувики с глубинами 1 2 3 4 5, и ты удалишь 3, (т.е. занятые глубины будут 1 2 4 5, getNextHighestDepth вернет 6.
Ещё вроде как вместо mc можно указать Number, глубину, но никогда не пользовался.
Код:
mc.swapDepths(depth);
Пример:
Код:
_root.mc.swapDepths(99);
Тупо перемещает клип mc на глубину 99. Если на глубине 99 что то было, то это что то перемещается на глубину, которую имел mc. Проще говоря, mc1.swapDepths(mc2) выполнит следуйщее:
глубина мс1 станет глубиной мс2.
глубина мс2 станет глубиной мс1.

Ещё есть классы depthManager, но тебе до них рановато, я считаю...


P.S. Увидел столь красиво оформелный пост, ни 1 грамматической ошибки, все английские слова написаны английскими буквами... Не поленился, расписал человеку.)
Извиняйте если обьяснил как детсаду)

update:

Про масивы: не может быть что пуст.

Код:
var mc:MovieClip=createEmptyMovieClip("mc1",_root.getNextHighestDepth());
var arr:Array=[]; //или var arr:Array=new Array(), это более краткая запись
arr.push(mc);
mc=attachMovie("mc","mc2",_root.getNextHighestDepth());
arr.push(mc);
trace(arr); //Output: _level0.mc1,_level0.mc2


Последний раз редактировалось Psycho Tiger; 30.11.2007 в 07:35.
Старый 30.11.2007, 11:28
Blajimir вне форума Посмотреть профиль Отправить личное сообщение для Blajimir Найти все сообщения от Blajimir
  № 6  
Ответить с цитированием
Blajimir

Регистрация: Nov 2007
Сообщений: 10
Огромное спасибо за столь подробный ответ!!!
Я вам очень благодарен

Старый 30.11.2007, 16:29
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 7  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
Psycho Tiger - красавчик =) респект...

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

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

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


 


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


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