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

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

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

Регистрация: Sep 2006
Сообщений: 22
По умолчанию Как правильно ограничить область MovieClip-а?

Суть в том, что мне необходимо два разных клипа с разными обработчиками кликов мыши по соседству.
По умолчанию, если я создаю клип без указания всяких _height или hitArea, его обработчик onRelease (к примеру) срабатывает где-бы я не нажал кнопку. Причем заодно срабатывает и onrelease другого клипа.

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

Примерный код
Код:
this.createEmptyMovieClip("image_mc", 1);
this.image_mc.createEmptyMovieClip("image_hit_mc", 0);

this.image_mc.image_hit_mc.moveTo(0, 0);
this.image_mc.image_hit_mc.beginFill(0x555500);
this.image_mc.image_hit_mc.lineTo(40, 0);
this.image_mc.image_hit_mc.lineTo(40,  40);
this.image_mc.image_hit_mc.lineTo(0, 40);
this.image_mc.image_hit_mc.lineTo(0, 0);
this.image_mc.image_hit_mc.endFill();
this.image_mc.image_hit_mc._visible = false;
this.image_mc.hitArea = this.image_mc.image_hit_mc;


this.image_mc.onMouseDown = function () {
...bla-bla-bla...
};
Думал, что после такого onMouseDown будет работать только в области заанной hitArea, а она везде срабатывает.... ???


Последний раз редактировалось Fbor; 26.09.2006 в 00:48.
Старый 26.09.2006, 01:35
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Может надо использовать событие onPress?
onMouseDown - Обработчик события; вызывается, когда нажимается левая кнопка мыши.
onPress - Обработчик события; вызывается, когда пользователь прижимает левую кнопку мыши, в то время как курсор находится над мувиклипом.

Старый 26.09.2006, 13:57
Fbor вне форума Посмотреть профиль Отправить личное сообщение для Fbor Найти все сообщения от Fbor
  № 3  
Ответить с цитированием
Fbor

Регистрация: Sep 2006
Сообщений: 22
с onPress-ом та же история

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

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
Код:
this.createEmptyMovieClip("image_mc", 1);
this.image_mc.createEmptyMovieClip("image_hit_mc", 0);

// Рисуем в мувиклипе красный квадрат
this.image_mc.moveTo(0, 0);
this.image_mc.beginFill(0xff0000);
this.image_mc.lineTo(100, 0);
this.image_mc.lineTo(100,  100);
this.image_mc.lineTo(0, 100);
this.image_mc.lineTo(0, 0);

// Рисуем в мувиклипе зелёный квадрат с размерами маски
this.image_mc.beginFill(0x00cc00);
this.image_mc.lineTo(40, 0);
this.image_mc.lineTo(40,  40);
this.image_mc.lineTo(0, 40);
this.image_mc.lineTo(0, 0);

this.image_mc.image_hit_mc.moveTo(0, 0);
this.image_mc.image_hit_mc.beginFill(0x555500);
this.image_mc.image_hit_mc.lineTo(40, 0);
this.image_mc.image_hit_mc.lineTo(40,  40);
this.image_mc.image_hit_mc.lineTo(0, 40);
this.image_mc.image_hit_mc.lineTo(0, 0);
this.image_mc.image_hit_mc.endFill();
this.image_mc.image_hit_mc._visible = false;
this.image_mc.hitArea = this.image_mc.image_hit_mc;

this.image_mc.onPress = function () {
	trace("...bla-bla-bla...");
};
Так всё должно правильно работать. При таком коде, который я представил выше, курсор изменяется только в пределах зелёного квадрата... Ну и событие onPress вызывается при щелчке в пределах зелёной области.

Старый 26.09.2006, 22:29
Fbor вне форума Посмотреть профиль Отправить личное сообщение для Fbor Найти все сообщения от Fbor
  № 5  
Ответить с цитированием
Fbor

Регистрация: Sep 2006
Сообщений: 22
Круто.. а с onMouseDown не работает
onPress реально работает (до этого у меня не работал из-за ошибки в коде), а onMouseDown - нет.
и как можно такое обойти?

Старый 26.09.2006, 22:31
Fbor вне форума Посмотреть профиль Отправить личное сообщение для Fbor Найти все сообщения от Fbor
  № 6  
Ответить с цитированием
Fbor

Регистрация: Sep 2006
Сообщений: 22
Т.е. если в Вашем коде заменить onPress на onMuseDown, то он срабатывает далеко за пределами мувиклипа

Старый 27.09.2006, 15:39
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 7  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 Fbor:
Я знаю. Поэтому я уже давно в этой теме обьяснил, за что отвечает каждое из этих событий. А чем вас onPress не устраивает?

Старый 27.09.2006, 22:41
Fbor вне форума Посмотреть профиль Отправить личное сообщение для Fbor Найти все сообщения от Fbor
  № 8  
Ответить с цитированием
Fbor

Регистрация: Sep 2006
Сообщений: 22
Хм.. ок, onPress - аналог onMouseDown, только привязанный к мувиклипу (прогнал я.. не совсем понял тот Ваш пост, где вы это разъяснили).
А есть аналог onMouseUp?
Можно-ли так, что onPress - ловлю прижимание кнопки, а onRelease последующее отпускание? Косяков не будет?

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

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

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


 


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


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