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

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

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

Регистрация: Mar 2009
Сообщений: 105
По умолчанию Почему не работает вложенный мувик?

Здравствуйте.
Проблема в следующем:
Есть мувик mc (копилка), при нажатии на который происходит его масштабирование

Код AS1/AS2:
mc.onRelease = function() {
	this.onEnterFrame = function() {
            //масштабирование mc
            ...
	} else {
	   delete this.onEnterFrame;
	}
};
в мувик mc (копилка) вложены мувики mc_1,mc_2,mc_m (копилка_часть1, копилка_часть2, монета).
Реализована возможность помещения монеты в копилку

Код AS1/AS2:
myDragger(mc_m)
function myDragger(mc:MovieClip) {
	mc.onPress = function() {
		this.startDrag(false);
		mc.onMouseMove = function() {
			updateAfterEvent();
		};
	};
	mc.onMouseUp = function() {
		if (//монета в нужном месте) {
			{
				...
				mc.onEnterFrame = function() {
					//перемещение монеты в копилку
					} else {
						delete mc.onEnterFrame;
					}
				};
 
			};
		} else {
			//перемещение монеты в начальную позицию
			...
		}
		delete mc.onMouseMove;
		stopDrag();
	};
}
"Помещение монеты в копилку" работает (в отдельности). Но как только производится предворительное масштабирование мувика mc, вложенные в него мувики (Drag and Drop) не работают.

Подскажите, пожалуйста, в чем ошибка и как ее устранить.
Спасибо!


Последний раз редактировалось zelik; 12.05.2009 в 21:43. Причина: уточнение
Старый 13.05.2009, 14:40
zelik вне форума Посмотреть профиль Отправить личное сообщение для zelik Найти все сообщения от zelik
  № 2  
Ответить с цитированием
zelik

Регистрация: Mar 2009
Сообщений: 105
По умолчанию Проблема с drag-and-drop

Всем доброго дня!

По следуещей ссылке уже пытался найти помощь, но, видимо, проблема осталась не понятой..
http://www.flasher.ru/forum/showthread.php?t=124927

Попробую изложить по-другому.

Есть мувик mc, в который вложены мувики mc1,mc2. Для mc1,mc2 реализован drag-and-drop. Все работает.

Если для mc прописываю onRelease(), то drag-and-drop перестает работать.

Пожалуйста, обясните, в чем проблема и как ее устанить.

Заранее большое спасибо!

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

Регистрация: Nov 2008
Адрес: Ukraine
Сообщений: 88
Отправить сообщение для Merf с помощью ICQ Отправить сообщение для Merf с помощью Skype™
У меня была такая же проблема, мне обьяснили что если на родительском мувике есть код, то код дочерних работать не будет, попробуйте обойтись без этого, например создать отдельный мувик полностью прозрачный над теми двумя и при нажатии и удержании на нем курсора двигались те два.
__________________
http://merfius.weebly.com/

Старый 13.05.2009, 15:33
zelik вне форума Посмотреть профиль Отправить личное сообщение для zelik Найти все сообщения от zelik
  № 4  
Ответить с цитированием
zelik

Регистрация: Mar 2009
Сообщений: 105
Спасибо!
Интересно, но хотелось бы понять принцип...
Это же часто встречающаяся ситуация.
Неужели все используют дополнительный прозрачный мувик?


Последний раз редактировалось zelik; 13.05.2009 в 15:44.
Старый 13.05.2009, 17:32
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

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

Добавлено через 8 минут
Можно и на отпускание кнопки - тогда эмулируется поведение как у onRelease в точности:

Код AS1/AS2:
var mouseListenerOn:Object = new Object(); //слушаем попадание
mouseListenerOn.onMouseUp= function() {	
    if (mc.hitTest(_root._xmouse, _root._ymouse)) {
    //код, что делать при "нажатии" на mc 
    }
};	
Mouse.addListener(mouseListenerOn);
Добавлено через 9 минут
И когда надо, убиваем слушатель.

Старый 13.05.2009, 18:19
zelik вне форума Посмотреть профиль Отправить личное сообщение для zelik Найти все сообщения от zelik
  № 6  
Ответить с цитированием
zelik

Регистрация: Mar 2009
Сообщений: 105
Спасибо, mooncar. Так тоже работает.
А есть возможноть изменить курсор при наведении?
А когда надо убивать слушатель при том, что mc может вызываться неоднократно?

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

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


Последний раз редактировалось mooncar; 13.05.2009 в 19:14.
Старый 13.05.2009, 20:26
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Немного не по теме, но...
Код AS1/AS2:
mc.onRelease = function() {
	this.onEnterFrame = function() {
            //масштабирование mc
            ...
	} else {
	   delete this.onEnterFrame;
	}
};
мне одному этот код кажется странным?

Старый 13.05.2009, 20:38
zelik вне форума Посмотреть профиль Отправить личное сообщение для zelik Найти все сообщения от zelik
  № 9  
Ответить с цитированием
zelik

Регистрация: Mar 2009
Сообщений: 105
Если не сложно, то поясните, в чем странность!

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
А что с кодом не так?
У меня есть, например, такой кусок, использую для всплывающих подсказок, здесь тоже убивается ненужная ф-я:
Код AS1/AS2:
	targetmc.onRollOver = function(){
 
		this.onMouseMove = function(){
			this["popup"]._visible = true;
			this["popup"]._x = _xmouse;
			this["popup"]._y = _ymouse - 30;
			};
	};		
	targetmc.onRollOut = function(){
		this["popup"]._visible = false;
		delete this.onMouseMove;
	};
Добавлено через 4 минуты
Убивается же не сам метод, а определяемая функция.

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

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

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


 


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


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