|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
что мешает в САМОЙ кнопке сделать
Если у вас сама кнопка решает что ей делать.
__________________
Отряд Котовскага |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Самый красивый довод – про моментальное отключение всех кнопок удалением одного слушателя – зиждется на Вашем слабом знании Событийной модели. Я не знаю, кто Вас научил таким ужасным костылям – накрывать спрайтом, пробегаться по массивам. Есть простой кошерный метод stopPropagation(). В любой момент Вы можете полностью отрубить любому контейнеру захват мыши, и все его обитатели станут глухими.
Надеюсь, концепция что все обитатели должны сидеть в контейнере, а не разгуливать по стейджу, у Вас не вызывает возражений? Тогда пример: package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; /** * ... * @author wolsh */ public class Main extends Sprite { private var _sprite:Sprite; private var _modalSprite:Sprite; private var _container:Sprite; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point _container = new Sprite(); addChild(_container); //// В контейнер поместим "кнопку", одну из 128 тысяч. _sprite = new Sprite(); _sprite.graphics.beginFill(0x000000); _sprite.graphics.drawRect(0, 0, 150, 100); _sprite.x = _sprite.y = 150; _sprite.name = "DISABLED"; _container.addChild(_sprite); //// А это якобы модальное окно, которое будет оставаться активным, //// когда контейнер заглохнет. _modalSprite = new Sprite(); _modalSprite.graphics.beginFill(0x008844); _modalSprite.graphics.drawRect(0, 0, 100, 50); addChild(_modalSprite); _modalSprite.x = _modalSprite.y = 120; _modalSprite.name = "MODAL"; //// Вешаем слушателей. Для наглядности я сделал один хендлер //// и для спрайта в контейнере и для модального окна. Это не важно)) _modalSprite.addEventListener(MouseEvent.CLICK, clickHandler); _sprite.addEventListener(MouseEvent.CLICK, clickHandler); //// Внезапно: Отключаем захват клика для контейнера и всех его 128 тысяч кнопок. //// _sprite с этого момента не получает события клика. _container.addEventListener(MouseEvent.CLICK, clickStopper, true); } private function clickStopper(event:MouseEvent):void { event.stopPropagation(); } private function clickHandler(event:MouseEvent):void { var s:Sprite = event.target as Sprite; if (s != null) trace("Clicked", s.name); } } } Ну и не забываем про старый добрый Добавлено через 14 минут Котяра, хитрость в том что кнопка не решает, а только хранит колбэк. Если бы решала, был бы полный атас. А так сохраняется видимость контроля за происходящим – после клика только Сам Главный решает, вызывать колбэк или нет. Ну и опять же, озвученный выше довод про моментальное отключение/включение всех кнопок. Если они будут "нажиматься" сами, то автор видит лишь два костыля как остановить это.
__________________
Reality.getBounds(this); |
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
я уже давно сделал правильно и у меня всё работает без единого костыля... ваши доводы в пользу использования тысячи слушателей событий противоречат рекомендациям коллина мука. Я привел страницы где черным по белому написано что я прав, а вы нет.
Добавлено через 5 минут Цитата:
Добавлено через 8 минут Цитата:
Добавлено через 10 минут это шутка или не? я не уловил что-то |
|
|||||
Цитата:
И да, Мук не забор, но все же...
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Оффтоп: не надо цитировать кучу.
Если хотите ответить - просто отвечайте. Либо конкретику цитируйте. Всем и так понятно что вы отвечаете на вышестоящие топики. По теме: почитайте про паттерны, ну и про MVC. Здесь на форуме много. Потом приходите.
__________________
Отряд Котовскага |
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
Пролистал про MVC, в очередной раз убедился что я прав...
|
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Я думаю вам пора уже свою книгу писать. Ну там делиться опытом. Свои паттерны придумать. Сейчас такая разруха: все не так, везде все не правы и пишут слишком много кода.
|
|
|||||
Lorem ipsum
|
Не шутка. Для кнопки слишком функционально. Было бы странно открыть капот автомобиля — а там пусто! Ну точно — вся механика спрятана в замке зажигания!!!
Здесь не аукцион вроде Добавлено через 2 минуты Но Bgg не про этот MVC говорил!
__________________
Поймай яблоко 2! |
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
Цитата:
Добавлено через 2 минуты Готов выслушать ваши предложения |
Часовой пояс GMT +4, время: 21:08. |
|
« Предыдущая тема | Следующая тема » |
|
|