есть ли «когда» в программировании, в отличие от if / else if и т. д.? - PullRequest
0 голосов
/ 13 сентября 2011

Я имею в виду, есть ли способ в AS3 или в программировании в целом (php, js и т. Д.), Чтобы событие вызывало / активировало «КОГДА» что-то делает, в отличие от if / else if / elseоператоры?

например, скажем, я хочу, чтобы событие срабатывало / активировалось ТОЛЬКО при нажатии на метку кадра, а после этого делало что-то еще и т. д., по сути, заставляя его делать что-то одно за другим в соответствии сКОГДА определенные цели достигнуты.есть ли тип «когда» и т. д., который будет делать это в отличие от if / else if и т. д.

например, используя приведенный выше пример, вместо того, чтобы я делал что-то вроде этого:

Code:
xyz.addEventListener(Event.ENTER_FRAME / or INIT , btn);

function btn(e:Event):void{
    if ( externalSwf.currentFrameLabel == " label here "){
          do something code here.
    }

}

есть ли способ сделать это так:

Code:
xyz.addEventListener(Event.ENTER_FRAME / or INIT , btn);

function btn(e:Event):void{
    when ( externalSwf.currentFrameLabel == " label here "){
          do this.


          when (this happens){ 
        do this next
}
    }

}

и т. Д.

как этого добиться?

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

По сути, я говорю: мне не нужны условные выражения, мне нужны ... определенность ... если это имеет смысл, lol.

надеюсь, это не смущает.

любые советы, идеии т. д. Я с удовольствием ценю.

спасибо.

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

То, что вы ищете, уже сделано событиями. Например, событие запускает , когда собирается представить новый кадр. Затем вы можете проверить , если этот кадр имеет определенную метку.

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

frameLabelEventDispatcher.addEventListener("label here", whenLabel);

function whenLabel() { /* do something */ }
0 голосов
/ 13 сентября 2011

Если вы хотите что-то сделать, когда значение какого-либо свойства (например, prop) какого-либо объекта (например, типа Example расширяется EventDispatcher), вы должны выбросить событие в сетере prop.Итак, я предлагаю что-то вроде следующего:

class Example1 extends Example {
    public static var eventName = "event_name";
    //var prop is declared in Example class
    public function setProp(val: string) {
        prop = val;
        if (prop == "some_value") {
            dispatchEvent(new flah.events.Event(eventName));
        }
    }

    public function init() {
        addEventListener(eventName, handler);
    }

    private function handler(e: Event) {
        //do whatever you like here
    }
}

Ну, я думаю, вы поняли мою идею.Надеюсь, что это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...