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

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

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

Регистрация: May 2006
Сообщений: 57
Question getNextHighestDepth

У меня есть такой код. На сцене (за краями) валяется 2 мувика - copy_l и copy_r. Есть прямоугольник Analyser, над которым создаются дубликаты этих copy_l и copy_r; По глубине дб выше чем Analyser, иначе сообщения от мыши не пройдут.

Проблема номер раз: они все равно не проходят
Проблема номер два: если сделать финт ушами и после создания кучи дубликатов убрать с вида Analyser (_y += 1000), то сообщения начинают проходить но только к верхним дубликатам.

Вижу проблему в getNextHighestDepth, которая на _root выдает шибко большие числа. Как написано в Справке, это не правильно. На других мувиках выдает нули...

Как мне сделать чтоб в куче дубликатов (один на другом, потом они мышкой растаскиваются), сообщения получали все и чтоб были правильные depth?
Код:
class Analyser extends MovieClip {
	
	var type : String;
	var NID  : Number;
	var copyl;
	var copyr;
	
	function Analyser()
	{
		copyl = eval("_root." + "copy_l");
		copyr = eval("_root." + "copy_r");
		if (_global.objs == undefined)
		{
			_global.objs    = 0;
			_global.getnxt = function()
			{ 
				_global.objs++;
				return _global.objs;
			}
		}

		duplicate();
		
		_visible = false;
		
		NID = setInterval(this,"dub", 1000);
		
	}
	function dub()
	{
		clearInterval(NID);
		for(var i = 0; i < 11 ; i++) duplicate();
		_y+=1000;
	}
	function duplicate()
	{
		
		var num   = _global.getnxt();
		var copyl1 = copyl.duplicateMovieClip("copyl" + num, _root.getNextHighestDepth(), 
											{_x : getBounds(_root).xMin + 10, _y : 10+ (getBounds(_root).yMin + getBounds(_root).yMax) / 2,
											 type : this.type, subtype : "moveme", myPipe : ("copyr" + num)});
		var copyr1 = copyr.duplicateMovieClip("copyr" + num, _root.getNextHighestDepth(),
											{_x : getBounds(_root).xMax - 5, _y : 10+(getBounds(_root).yMin + getBounds(_root).yMax) / 2,
											 type : this.type, subtype : "moveme", myPipe : ("copyl" + num)});
		trace(copyl1 + " " + copyl1.getDepth());
		copyl1.onMouseMove();
		copyr1.onMouseMove();			
	}

	function onMouseMove()
	{
	}
}
Примечание: _global.getnxt введена для именования мувиков, созданных динамически (на _global не обр внимания )


Последний раз редактировалось World Architect; 31.05.2006 в 18:25.
Старый 31.05.2006, 19:11
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 2  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
Вернее мышкой цепляется самый нижний из кучи. В остальное не доходит

Старый 31.05.2006, 19:57
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 3  
Ответить с цитированием
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
исходник давай, твое обьяснение никуда не годится.
__________________
I'm only happy when it rains.
Waka Laka

Старый 31.05.2006, 20:32
Madasan вне форума Посмотреть профиль Отправить личное сообщение для Madasan Найти все сообщения от Madasan
  № 4  
Ответить с цитированием
Madasan
 
Аватар для Madasan

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
Цитата:
Сообщение от World Architect
Вижу проблему в getNextHighestDepth, которая на _root выдает шибко большие числа. Как написано в Справке, это не правильно. На других мувиках выдает нули...
Если выдает большие числа, значит либо что-то лежит на высоком уровне, либо это не тот трейс, функция работает нормально.

Цитата:
Сообщение от World Architect
Как мне сделать чтоб в куче дубликатов (один на другом, потом они мышкой растаскиваются), сообщения получали все и чтоб были правильные depth?
Если у тебя дубликаты перекрывают друг друга, то получать событие регистрирующее нахождение курсора над мувиком, будет только тот мувик, который выше по уровню. Но это когда вешаешь событие на сам мувик, если твои мувики лежат друг над другом, то не обязательно вешать событие на каждый, можно сделать один невидимый мувик, при наведении на который мышь будет цеплять и тащить верхний экземпляр. Этот невидимый мувик, также может передавать события и в другой мувик, если в этом есть необходимость. Чтобы все было правильно надо правильно и делать, и правильно объяснять, из кода, например не понятно, что выполняет вот эта функция:
Код:
copyl1.onMouseMove();
copyr1.onMouseMove();
и почему она вызывается два раза?
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

Старый 31.05.2006, 21:44
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 5  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
Она не 2 раза вызывается а по одному для разных мувиков. Просто названия похожие.
Насчет getNextHighestDepth, то в справке к ней написано:

Код:
Note: If you are using version 2 components, do not use this
method. If you place a version 2 component either on the Stage or in the
Library, the getNextHighestDepth() method can sometimes return depth
1048676, which is outside the valid range. If you are using version 2
components, you should always use the version 2 components
Вот как раз с этой 1048676 у меня и стартует Depth. И как сказано в справке, это which is outside the valid range.

Вызываю, как видно к _root.getNextHighestDepth().

Старый 31.05.2006, 21:52
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 6  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
Analyser сделан для того чтобы программер кинул мувик Analyser на рабочее пространство, тем самым показав своими координатами, в какое место создавать дубликаты другого мувика конструктору Analyser'а. После создания кучи дубликатов, Analyser сваливает за границу рабочего пространства (за экран).
Видимо передачу мышовых сообщений нагружу на Analyser. Если конечно _xmouse и _ymouse в любом случае пересчитываются, даже если Depth не пропускает события. Если нет, придется париться... Считать еще и _xmouse и _ymouse...

Старый 31.05.2006, 23:43
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 7  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
а насчет
Код:
copyl1.onMouseMove();
copyr1.onMouseMove();
не обращайте внимания, к делу не относится (обновление состояний мувиков так делается)
Вопрос с Depth еще висит

Старый 31.05.2006, 23:48
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Не используй getNextHighestDepth
А ещё лучше забудь и про _root, eval и не пихай всякий мусор в _global.
Поверь -- без них можно прожить совершенно легко.

Старый 31.05.2006, 23:50
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от __etc
Не используй getNextHighestDepth
....Поверь -- без них можно прожить совершенно легко.
Ни разу не использовал (правда в силу того что в mx этого не было) и работало как часы
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.06.2006, 08:31
World Architect вне форума Посмотреть профиль Отправить личное сообщение для World Architect Найти все сообщения от World Architect
  № 10  
Ответить с цитированием
World Architect

Регистрация: May 2006
Сообщений: 57
А как мне тогда глубину задать при дублировании?


Последний раз редактировалось iNils; 01.06.2006 в 12:06.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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