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

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

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

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
По умолчанию mouseEnabled = false не работает

Имеется мувик template с двумя кнопками. На одну из кнопок должна указывать анимированная стрелка, которую я аддчайлдю в этот же template и делаю ей
Код AS3:
arrow.mouseChildren = arrow.mouseEnabled = false;
При этом стрелка отчасти перекрывает вторую кнопку. Кнопка в месте перекрытия не прокликивается.
Повесил слушатель на MouseEvent.CLICK на stage, оказалось, событие при клике по стрелке ловит сам template.
Не могу понять, почему так происходит, ведь я вырубил mouseEnabled стрелки. Подскажите пожалуйста, как можно решить эту проблему.

Старый 25.04.2013, 14:32
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 2  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
mouseEnabled означает что вы отключаете события мыши на этом обьекте, это не означает что обьект будет пропускать события сквозь себя
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

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

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
chamele0n, и как быть?

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

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
P.S. неправильно сформулировал изначальную задачу. кнопка 2 находится не в template, а в другом спрайте. например как на рисунке
Изображения
 

Старый 25.04.2013, 14:41
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 5  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Rembrant, приведите, пожалуйста, побольше кода, а то трудно интерпретировать словесное описание.

Старый 25.04.2013, 14:45
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 6  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
ну логически так и должно работать, если тебе нужно чтобы стрелка не мешала и перекрывала одновременно, тогда можно сделать так:
1. создаем MovieClips с кнопками
2. создаем стрелку
3. создаем прозрачные кнопки
4. вешаем события на прозрачные кнопки, при событиях меняем\анимируем MovieClips в пункте 1

Добавлено через 2 минуты
ну или убрать стрелку чтобы не перекрывала
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 25.04.2013, 14:48
Rembrant вне форума Посмотреть профиль Отправить личное сообщение для Rembrant Найти все сообщения от Rembrant
  № 7  
Ответить с цитированием
Rembrant
 
Аватар для Rembrant

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
bav, вот с таким кодом красная стрелка не даёт кликать кнопку btn1
Код AS3:
import flash.events.MouseEvent;
 
template.btn0.buttonMode = template2.btn1.buttonMode = true;
var arrow:Arrow = new Arrow();
arrow.x = -35;
arrow.y = 131;
arrow.mouseEnabled = arrow.mouseChildren = false;
template.addChild(arrow);
template2.btn1.addEventListener(MouseEvent.CLICK, onBtn1);
 
function onBtn1(event:MouseEvent):void
{
	trace("1");
}
Изображения
 

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Добавьте строчку
Код AS3:
template.mouseEnabled = false;
Вот смоделированный пример:
Код AS3:
// Создаем объекты
var template:Sprite = new Sprite();
var template2:Sprite = new Sprite();
var btn0:Sprite = new Sprite();
var btn1:Sprite = new Sprite();
var arrow:Sprite = new Sprite();
 
// Рисуем объекты
var g:Graphics = template.graphics;
g.lineStyle(1);
g.beginFill(0xAAAAAA);
g.drawRect(0, 0, 300, 300);
g.endFill();
 
g = template2.graphics;
g.lineStyle(1);
g.beginFill(0x888888);
g.drawRect(0, 0, 100, 200);
g.endFill();
 
g = btn0.graphics;
g.lineStyle(1);
g.beginFill(0x00FF00);
g.drawRect(0, 0, 50, 50);
g.endFill();
 
g = btn1.graphics;
g.lineStyle(1);
g.beginFill(0xFF0000);
g.drawRect(0, 0, 50, 50);
g.endFill();
 
g = arrow.graphics;
g.lineStyle(1);
g.beginFill(0x00FFFF);
g.drawCircle(0, 0, 25);
g.endFill();
 
// Располагаем объекты
template.x = 30;
btn1.x = btn1.y = 10;
btn0.x = btn0.y = 20;
arrow.x = 10;
arrow.y = 30;
 
// Добавляем на сцену
addChild(template2);
addChild(template);
template2.addChild(btn1);
template.addChild(btn0);
template.addChild(arrow);
 
// Функции clk и clk0 выводят соответственно
// "btn1 clicked" и "btn0 clicked"
btn1.addEventListener(MouseEvent.CLICK, clk);
btn0.addEventListener(MouseEvent.CLICK, clk0);
arrow.mouseEnabled = false;
template.mouseEnabled = false;

Старый 25.04.2013, 16:30
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 9  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от chamele0n Посмотреть сообщение
mouseEnabled означает что вы отключаете события мыши на этом обьекте, это не означает что обьект будет пропускать события сквозь себя
Вот это мы приехали.
__________________
Поймай яблоко 2!

Старый 26.04.2013, 00:35
Rembrant вне форума Посмотреть профиль Отправить личное сообщение для Rembrant Найти все сообщения от Rembrant
  № 10  
Ответить с цитированием
Rembrant
 
Аватар для Rembrant

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
bav, большое спасибо.

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

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

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


 


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


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