Цитата:
|
Прошу извинить меня, если кого оскорбил.
|
Ок, забыли.
Цитата:
|
И еще хотелось бы узнать почему
|
Игнорируем первый параметр ( closure:Function ).
Метод listen принимает параметры двумя шаблонами: первый это:
хэндлер, событие1, событие2, событие3 – в этом случае, для всех событий будет один обработчик. Этот обработчик if..if else..else или switchem уже разбертся, что и куда.
второй это:
событие1, хендлер1, событие2, хендлер2 и тд.

Код AS3:
if( rest[0] is Function )
var handler:Function = rest.shift();
Это краткая запись (shortcut) для записи:

Код AS3:
var handler:Function;
if( rest[0] is Function )
handler = rest.shift();
То есть, если первый парметр функция, то мы сносим первый элемент из массива rest, и передаем его, переменной handler.
Далее мне нужно проверить, назначено ли что либо в handler, я могу сделать это через handler == null, handler === null, handler, handler is Function, handler as Funcition.
handler == null, handler === null, и просто handler в if блоке выдаст мне Warning (при компиляции mxmlc ). Чтобы держать код чистым, я могу использовать либо as или in конструкцию. То есть я хочу построить условие
Если ( переменная хендлер определенна ) { делай вот это } так как я ранее. Я мог бы использовать is в обоих случаях, но так как контекст очень похож ( if блок ) использовать разные конструкции является более правильным решением, так как хоть они и похожи по результату, это различные действия. Если бы контекст был разный (например один if блок а другой цикл) то применение is было бы приоритетней.