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

sinya 07.10.2010 15:10

слушатель и ф-ция
 
Всем привет.

Есть ли какая-то разница между назначением слушателя так
Код:

addEventListener(Event.ENTER_FRAME, function (e){
    //function body
});

и так
Код:

addEventListener(Event.ENTER_FRAME, step);
.....
function step(e){
    //function body
}

для компилятора?

У меня есть пример кода, использующий один из физ. движков. Так вот, при назначении слушателя первым способом все работает, а если назначить вторым - флеш зависает, приходится принудительно прекращать его работу. То же творится с standalone. Ошибки если и выдает, то прочитать не могу, т.к. не могу завершить выполнение флешки и оставить работающим flash ide.

Подчеркну суть вопроса: какая разница для компилятора /интерпретатора между первым и вторым способом?

arkadattx 07.10.2010 15:15

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

-De- 07.10.2010 15:21

Много в чем ещё разница, видимость переменных в первом и втором случае разная например. Думаю поэтому собсно заметно по-разному работают.

sinya 07.10.2010 15:24

arkadattx
прекрасно понимаю насчет не есть гуд. )
Но Вы говорите про разницу для разработчика, который в первом случае не сможет отписаться. Я спрашиваю про разницу для компилятора, который в первом случае выполняет код, а во втором - нет.

-De-
а еще? ) Переменные никакие не объявляю, зависание происходит при обращении к экземпляру класса физ. движка.

arkadattx 07.10.2010 15:26

Не зная кода сложно говорить о чем-то. Но сам факт того что с "не есть гуд" вариантом работает - говорит ИМХО не в пользу разработчика.
Что до компиллятора - не знаю что и как преобразует, в разницу в байткоде тоже не вникал.

-De- 07.10.2010 15:31

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

random13 07.10.2010 15:36

отписаться можно, но ток внутри самой функции, ну или по ссылке какой нить если передать значения, в общем лучше стараться не пользоваться подобной конструкцией

incvizitor 07.10.2010 17:04

http://www.flasher.ru/forum/showpost...51&postcount=6


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

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