Пример скорее для начинающих, чем для опытных флешеров…
Например, если ставятся слушатели на разные объекты, а объектов довольно много, то вместо этого:
btn1.addEventListener(MouseEvent.CLICK , Kraslich); btn2.addEventListener(MouseEvent.CLICK , Orglich); btn3.addEventListener(MouseEvent.CLICK , Zellich); function Kraslich(e:MouseEvent):void { kras_color = true ; mess.text = "Ловите красных!!!"; } function Orglich(e:MouseEvent):void { oran_color = true ; mess.text = "Ловите оранжевых!!!"; } function Zellich(e:MouseEvent):void { zel_color = true ; mess.text = "Ловите зеленых!!!"; }
Можно писать так:
btn1.addEventListener(MouseEvent.CLICK , MouseClickHandler); btn2.addEventListener(MouseEvent.CLICK , MouseClickHandler); btn3.addEventListener(MouseEvent.CLICK , MouseClickHandler); var txt:String; function MouseClickHandler(e:MouseEvent):void { switch (e.target as MovieClip) { case btn1: kras_color = true ; txt = "Ловите красных!!!"; break; case btn2: oran_color = true ; txt = "Ловите оранжевых!!!"; break; case btn3: zel_color = true ; txt = "Ловите зеленых!!!"; break; default: kras_color = true ; txt = "Ловите красных!!!"; break; } mess.text = txt; }
Путем небольшого теста, выяснилось, что оба варианта работают примерно одинаково, первый даже немного быстрее, но чтобы проще было найти функцию-обработчик и, чтобы код выглядел более структурировано лучше использовать второй вариант. Спасибо Дамиру…
P.s. 1 код писал не я)
20 октября 2010, 0:42
А в чем оптимизация то?
20 октября 2010, 12:29
Просмотрел еще раз код, немного подумал) и, в правду, получается, что оптимизации толком нет, наоборот каждый раз будет проверятся какая была нажата кнопка, а в первом случае никаких проверок нет, сразу выполняется соответствующая функция… Пост пока удалять не буду, но отредактирую в скором времени.
Спасибо, что написал коммент)
23 октября 2010, 19:01
такой стиль не только менее производителен, но и ухудшает читабельность кода. необходимо в 2 раза больше усилий чтобы найти обработчик
23 октября 2010, 19:56
в общем подправил, а искать можно через поиск)))