Форум 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=199339)

myregmail 16.05.2013 22:32

Срабатывание события
 
Здравствуйте.
Есть переменная которая меняется. Есть написанное событие. как вызвать событие когда переменная будет равна определенному значению?
Стоит ли проверять постоянно (EnterFrame и конструкция if) или есть другие способы/методы?

Idon'tKnow 16.05.2013 23:09

ProcXel.A, Вопрос, а как будет происходить проверка события? Т.е непосредственно через функцию или тем же if'ом ? Ведь придется проверять каждый шаг это значение функцией nPlus(); ?

Добавлено через 8 минут
А всё, вопрос отпал. Сначала подумал, что разницы нет в Вашем подходе и Event.ENTER_FRAM'a, потом понял, что во огромное кол-во раз будет лучше пользовательским событием. :)

Babylon 17.05.2013 00:18

ProcXel.A, редкостный трэш. Добавил в коллекцию :)

caseyryan 17.05.2013 07:42

Цитата:

Код AS3:

++n == 5 ? stage.dispatchEvent( n_event ) : trace( "n != 5 :(" );


Ужас :D
Никогда, НИКОГДА! так не делайте! Вообще не надо диспатчить никаких событий через stage. Ровно как и писать подобный трудночитаемый код.
Чревато дикими головными болями, при дальнейших попытках отладки.
Цитата:

ProcXel.A, редкостный трэш. Добавил в коллекцию :)
+1

Цитата:

Есть переменная которая меняется.
Никогда бы не подумал )
Прочитайте про инкапсуляцию. Конечно при написании кода в кадрах ее полноценно не применить, но тем не менее некоторый смысл и в данном случае будет.

in4core 17.05.2013 17:42

get/set if(value == 555) dispatchCustomEvent

in4core 17.05.2013 18:11

Цитата:

Babylon, а как надо было?
Как я написал. Я не вижу, что ТС что то говорил про кадры. Может он и не пишет в кадрах

in4core 17.05.2013 18:20

Код AS3:

import flash.events.Event;
 
var num:int = 0;
var catcher:int = 5;
 
this.addEventListener( "customEvent", onCustomHandler );
 
 
 
function onCustomHandler ( e:Event ):void {
        trace( "Ok" );
}
 
function set num( value:int ):void {
        this.num = value;
        if (this.num == catcher ) dispatchEvent( new Event("customEvent") );
}

Учите матчасть. Ответ у тебя верный, только читать его не хочется

caseyryan 17.05.2013 19:03

Цитата:

caseyryan, одну строчку, которая была написана просто в качестве примера, прочитать не смог?))
Причем тут эта строка? Одна строчка ладно, но если такого г/к целая гора, будет очень затруднительно.
И такой стиль говорит совсем не о мастерстве программиста, а скорее о его уровне чуть выше ламера и желании выпендриться перед совсем уж нубами.
Цитата:

caseyryan, почему не надо?
Допустим у тебя есть куча классов, в каком-то из них при определенном условии происходит диспатч события через stage. По этому событию что-то происходит и вываливается непонятная ошибка, какой-нибудь null pointer. Как ты будешь отыскивать кто и откуда кинул событие, если по факту оно пришло от stage?
Как-то на "заре" своей программной деятельности я такую оплошность допустил, в кавестве костыля. Вот сейчас ни сколько не вру, неделю искал в чем проблема. Все проклянул уже, когда случайно нашел ) И понял, что больше так не буду делать никогда.

Babylon 17.05.2013 19:49

Цитата:

Сообщение от in4core (Сообщение 1133663)
Как я написал. Я не вижу, что ТС что то говорил про кадры. Может он и не пишет в кадрах

incore спасибо, что подписались на мои мысли, я их диспатчил примерно в том же ключе.

Psycho Tiger 18.05.2013 00:56

Цитата:

Учите матчасть. Ответ у тебя верный, только читать его не хочется
Примерно вот такие эмоции.
Но мне правда нравится в людях стабильность. Обозвав код нечитаемым из за конвенций ты дал другой – образцовый, который нарушает другие конвенции. Браво.


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

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