понедельник, февраля 11, 2008

Старые грабли с зоной видимости переменных. AS2

В примере Добавляем ссылку в контекстное меню Flash. ContextMenu. AS2 есть один подводный камень. В методе onContextMenu, getURL вызывается от имени _root.
Если не указывать от чъего имени вызывать, либо вызывать от this, ничего не произойдет.
Метод onContextMenu работает, трейс из него проходит, но окно ссылки не открывается. Превое что приходит на ум - может быть покопаться в локальной политике безопасности? - Не поможет. Дело совсем в другом.

А дело в том, что метод onContextMenu присваивается объекту элемента контекстного меню ContextMenuItem, который не знает такого метода.

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

Комментариев нет: