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

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

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

Регистрация: May 2009
Сообщений: 45
Question Дублирование MovieClip

Здравствуйте!

Помогите с дублированием пожалуйста. Нужно дублировать мувиклип бесконечное число раз. И чтоб "клоны" сохраняли свойста "родителя". (код на frame, код на movieclip)

Код AS1/AS2:
logo_mc.duplicateMovieClip("logo_mc", name, random(100));
Этот код копирует только один раз и не сохранет функции родительского клипа.

Исходник: Скачать

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Либо используют функцию
Код:
duplicateMovieClip(target:String, newname:String, depth:Number) : Void
либо метод
Код:
public duplicateMovieClip(name:String, depth:Number, [initObject:Object]) : MovieClip
А у вас тут микс. Судя по записи, вы начинаете использовать метод, берете для клонирования logo_mc, а в скобках почему-то используете синтаксис функции.
Исходник вы, кажется, не тот вложили, не видно связи вопроса и файла по ссылке.

И еще:
- что значит "бесконечное количество раз"?
- не пишите код на мувиках.


Последний раз редактировалось mooncar; 31.10.2009 в 13:21.
Старый 31.10.2009, 13:47
Rsheih вне форума Посмотреть профиль Отправить личное сообщение для Rsheih Найти все сообщения от Rsheih
  № 3  
Ответить с цитированием
Rsheih

Регистрация: May 2009
Сообщений: 45
Не, исходник тот) не logo_mc для клонирования а mc1 как в исходнике.

Бесконечное число раз: то есть из главного мувика клонируем сколько хотим таких же мувиков. Чтоб потом их можно было удалять.

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

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

Старый 31.10.2009, 13:55
Rsheih вне форума Посмотреть профиль Отправить личное сообщение для Rsheih Найти все сообщения от Rsheih
  № 5  
Ответить с цитированием
Rsheih

Регистрация: May 2009
Сообщений: 45
А можешь конкретный код к моему исходнику написать? А то че то я пишу не получается(

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

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

Добавлено через 5 минут
Запиши внутри мувика в кадре
Код AS1/AS2:
this.onMouseDown = function() {
	var time = 500;
	if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
		trace(this);
 
		if (getTimer() - click < time) {
			trace("doubleClick");
			bassloop = new Sound();
			bassloop.attachSound("Drums");
			bassloop.start(0,1);
		} else {
			click = getTimer();
		}
	}
};
 
this.onRollOver = function(){ this._alpha=70; }
this.onRollOut = function(){ this._alpha=100; }
А в кадре главного таймлайна запиши, например
Код AS1/AS2:
mc1.duplicateMovieClip ('mc2', 10, {_x: mc1._x + 100});
Если нужно много раз дублировать - делай циклом.
Например:
Код AS1/AS2:
for (i = 2; i < 11; i++) {
	mc1.duplicateMovieClip ('mc' + i, i, {_x: random(300), _y: random(300)});
}
Все остальное нужно убрать, драг на мувике можно оставить, если нужен.

Если нужно звук разный - тоже доработать нужно будет. Например, передавать после дублирования во вновь созданный мувик текстовую ссылку-идентификатор определенного библиотечного звука.


Последний раз редактировалось mooncar; 31.10.2009 в 14:13.
Старый 31.10.2009, 18:52
Rsheih вне форума Посмотреть профиль Отправить личное сообщение для Rsheih Найти все сообщения от Rsheih
  № 7  
Ответить с цитированием
Rsheih

Регистрация: May 2009
Сообщений: 45
mooncar,

или я не так выразился) или вы не совсем поняли)

Вот мувик. Что мне нужно: нажимаешь на мувик и перетаскиваешь его (а то есть уже его копию) по рабочему столу. Потом можешь еще перетащить если надо. Все функции которые в исходнике, на мувике должны сохраняться на клонах.

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Сделай что я написал и потесть.
Должно получится так, как я приложил.
Естественно, я готовым не выдам от "сих" до "сих", подправь сам, основываясь на моих советах и приведенном коде.
Главное - все нужные функции запиши внутри мувика и оставь как есть для простоты то, что там связано с драгом, написанное прямо на мувике, хотя это кривовато так делать.
Вложения
Тип файла: rar sample2.rar (19.1 Кб, 91 просмотров)


Последний раз редактировалось mooncar; 31.10.2009 в 19:08.
Старый 31.10.2009, 19:29
Rsheih вне форума Посмотреть профиль Отправить личное сообщение для Rsheih Найти все сообщения от Rsheih
  № 9  
Ответить с цитированием
Rsheih

Регистрация: May 2009
Сообщений: 45
Ну мне надо чтоб не сразу клоны появлялись) А чтоб нажал на главный мувик и из него перетащил клона. И чтоб клона можно было удалить. Чтоб с главного мувика можно было перетаскивать клонов бесконечное количество)

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ясно. Как-то у вас сразу не задалось объяснить толком. Постарайтесь разобраться в данном коде, не то толку будет ноль и дальше самостоятельно вы не продвинетесь:
Про удаление подумайте сами (исп. removeMovieClip())

На главном таймлайне:
Код AS1/AS2:
var count:Number = 0;
mc.onPress = function  () { //нажали на оригинал
	count++;
	var item:MovieClip  = mc.duplicateMovieClip ('mc' + count, count);
	item.startDrag();
	item.onMouseUp = dragOff; //назначаем ф-ю на отпускание мыши, при этом копию уже можно было переместить
};
 
function dragOff () { 
	this.stopDrag ();
	if (this._x == mc._x && this._y == mc._y) { //если нажали на оригинал и отпустили мышку без переноса копии, то копия удаляется, как ее и не было, чтобы не мешала
		this.removeMovieClip();
	}
}
Назовите оригинал mc, а не mc1. Удалите с него записанный код с драгом, который присутствует на нем в оригинальном вашем исходнике.
Внутри этого оригинала должен быть видоизмененный ваш код:
Код AS1/AS2:
this.onMouseDown = function() {
	var time = 500;
	if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
		trace(this);
 
		if (getTimer() - click < time) {
			trace("doubleClick");
			bassloop = new Sound();
			bassloop.attachSound("Drums");
			bassloop.start(0,1);
		} else {
			click = getTimer();
		}
	}
};
 
this.onRollOver = function(){ this._alpha=70; }
this.onRollOut = function(){ this._alpha=100; }
Должно как-то так получиться:
Вложения
Тип файла: rar sample3.rar (19.1 Кб, 114 просмотров)


Последний раз редактировалось mooncar; 31.10.2009 в 20:32.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
movieclip , дублирование

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

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


 


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


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