Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   События остаются после их удаления (http://www.flasher.ru/forum/showthread.php?t=185516)

Wolsh 15.10.2012 15:49

Цитата:

да, непосредственно имеет. мы разбирались в том, что у кнопки нет двух одинаковых слушателей.
Мы разбирались не с Вашей "кнопкой", у которой, очевидно, не будет заявленной в теме проблемы, поскольку у нее нет собственного слушателя (странно, что мне приходится Вам это объяснять). Ваше убеждение, что именно таким странным образом весь мир и делает кнопки, является заблуждением. Давайте перенесем обсуждение Ваших кнопок на следующий раз и сконцентрируемся на обозначенной проблеме in4core с кнопкой, у которой ЕСТЬ внутренний слушатель клика. Примите, хотя бы гипотетически, что такие кнопки бывают. Вопрос как бы не в том, бывают ли такие кнопки, а в том, как рассылаются события. Спасибо за понимание.

Frost47rus 15.10.2012 15:57

я понимаю, что событие, которое происходит внутри его кнопки - будет видно извне.
но в этом случае - у него не верная логика самого процесса.
слушатель вешается и внутри и снаружи - на одно и то же.
убирая один - второй - остаётся и никуда не девается.
так зачем изначально было мешать в кашу всё вместе, если можно было сделать куда более прозрачно?!
он погряз в закутках своего кода, но не хочет его перестраивать.
его проблемы? да, его.

in4core 15.10.2012 16:28

Frost47rus - мне просто смешны ваши заявления. Про геттеры и сеттеры я вообще молчу, это просто угар, вам видимо не вдомек, что геттеры без сеттеров бывают. Про приватные переменные которые обозначаются в конструкторе - дикий лол. , *мышиный эвент хэндлер назван совсем как не хэндлер* - да ну нафиг? че серьезно ? - а надо наверное - mouseClickHandler писать ? - давай досвидания.

Frost47rus - никого не хочу обижать или оскорблять. - но я прекращаю разговор с оппонентом в двух случаях , когда он слишком глуп, либо слишком умен. С вами я прекращаю общение.

Frost47rus 15.10.2012 16:41

это ещё раз доказывает мои слова. вы второй день в программировании.
я пишу на хаксе, где геттеры без сеттеров ( и наоборот ) могут жить абсолютно спокойно.
причина моей записи про ваш геттер - была не в том, что он без сеттера, а в том, что он нафиг не нужен. абсолютно бессмысленный лишний код.

ваш код не полный. начиная от "начинки" самой кнопки, заканчивая кучей не логичных проверок.

ещё раз повторюсь - вам нужно реструктурировать ваш код.
с нормальной структурой таких глупых вопросов не возникло бы, потому что ошибок бы не было.

пс: приватные не статические переменные логично прописывать в конструкторе, т.к. они являются частью любого из экземпляров и не будут доступны без создания хотя бы одного, что подразумевает пробег по конструктору. после компиляции разкомпильте свою свфку и посмотрите где все ваши переменные находятся. посмотрели? верно, в конструкторе.
"а надо наверное - mouseClickHandler писать ? "
не ёрничайте.
достаточно было бы
Код AS3:

onMinusLineClick(e:...

- сразу бы стало понятно, что это функция - обработчик мышиного события. опять начнёте ёрничать? или всё же умерите свой пыл и посмотрите фактам в лицо?
as3 расслабляет для неправильных мыслей. а вы их принимаете за правильные. мыслите сразу верно - и будет счастье.

gloomyBrain 15.10.2012 17:07

Цитата:

Про геттеры и сеттеры я вообще молчу, это просто угар, вам видимо не вдомек, что геттеры без сеттеров бывают.
Уважаемый in4core, на эту тему лучше действительно Вам помолчать. Ибо бывают.
Что же касается вызова слушателя, который только что был удален - примера никто так и не увидел. Если есть желание продолжить общение - приведите минимальный пример кода.

in4core 15.10.2012 17:16

Цитата:

Уважаемый in4core, на эту тему лучше действительно Вам помолчать. Ибо бывают.
Уважаемый gloomyBrain - а вам стоит внимательнее читать что пишут, прежде чем высказываться. Я как раз и написал - что не то что бывают , а бывают и часто. перечитайте фразу

Добавлено через 2 минуты
Frost47rus
Цитата:

(_enabled == true) ? turnOn() : turnOff();
Как можно вообще лезть в дебаты , если когда написание if(someVar == true) вместо if(someVar) - является нормальным? - за программиста даже считать после такого нельзя.

Frost47rus 15.10.2012 17:40

Цитата:

Сообщение от in4core (Сообщение 1100014)
Как можно вообще лезть в дебаты , если когда написание if(someVar == true) вместо if(someVar) - является нормальным? - за программиста даже считать после такого нельзя.

это разумная привычка. скажем, если вы у obj.someBooleanParam будете проверять именно так, как вы написали, будут происходить нелепые чудеса, когда флеш вам null приравняет к false - и вы не сразу поймёте почему дальше у вас RTE.
и даже исходя из лишнего кода -7 моих лишних символов против десятков лишних строк.. не аргумент в вашу пользу ;)

Krusty 15.10.2012 17:58

В соответствии с рекомендациями, код
Код AS1/AS2:

if(someVar === true)
if(someVar === null)

более правильный, чем
Код AS1/AS2:

if(someVar)
if(!someVar)

Так писать необязательно, но считается хорошей практикой.
Можно так не считать, но наезжать за это и называть *****кодом точно не следует.
Если не верите, могу дать точные ссылки на руководства, где это прямо описано.

strangedk 15.10.2012 18:13

Цитата:

Сообщение от in4core (Сообщение 1099999)
*мышиный эвент хэндлер назван совсем как не хэндлер* - да ну нафиг? че серьезно ? - а надо наверное - mouseClickHandler писать ? - давай досвидания.

Грубо и глупо одновременно. Да, мышинные события для наглядности стоит начинать с mouse

AlexLucas 15.10.2012 18:16

Цитата:

Сообщение от in4core (Сообщение 1099826)
вопрос снят.

Вопрос другого плана. Если кнопка подписана на 2 события клика, и одно из событий было удалено, то при нажатии все равно срабатывают оба. Как разрешить срабатывать только тому, которое не было удалено?! ( какой нить там preventDefault )

Код AS3:

public class Main extends Sprite 
        {
                private var btn:Sprite = new 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
                        btn.graphics.beginFill(0xFF0000);
                        btn.graphics.drawCircle(20, 20, 20);
                        addChild(btn);
                        btn.addEventListener(MouseEvent.CLICK, evt1);
                        btn.addEventListener(MouseEvent.CLICK, evt2);
                }
 
                private function evt1(e:MouseEvent) {
                        trace('1');
                }
 
                private function evt2(e:MouseEvent) {
                        trace('2'); btn.removeEventListener(MouseEvent.CLICK, evt2);
                }
        }

Вот минимальный пример, который я воспроизвёл следуя вашему объяснению, при втором клике evt2 не срабатывает. Может вы его опять где-нибудь цепляете?


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

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