PDA

Просмотр полной версии : Подскажите что я не так делаю: Mouse.addListener(XXT)


dark256
21.02.2011, 20:58
Есть два пользовательских курсора, каждый на два состояния - показать, действие.
Есть две кнопки, которые вешают на мышь один из этих курсоров.

angelBTN.onRelease = function()
{
// Настраиваем курсор MAINPATH.GUI.CURS2
Mouse.hide()
Mouse.removeListener( MAINPATH.RESTOR.mouseListener )

var XXT = MAINPATH.RESTOR.mouseListener = new Object()

XXT.onMouseDown = XXT.onMouseUp = function() {
MAINPATH.GUI.CURS2.mOPEN._visible = !MAINPATH.GUI.CURS2.mOPEN._visible
MAINPATH.GUI.CURS2.mCLOSE._visible = !MAINPATH.GUI.CURS2.mCLOSE._visible
}
MAINPATH.GUI.CURS2.startDrag( true )
Mouse.addListener(XXT);
}

demonBTN.onRelease = function()
{
//тоже самое для MAINPATH.GUI.CURS
}

Содержимое MAINPATH.RESTOR постоянно подгружается и обновляется. Целиком.
Так вот ПЕРИОДИЧЕСКИ и непонятно почему, клип подгрузился, по кнопке кликнул, курсор включился мой юзерский, но XXT.onMouseDown, XXT.onMouseUp перестает обрабатываться.
Причем по кнопке можно 10 раз кликнуть - нормально, на 11й - листенер куда-то уходит.

Что я не так? Или листенер надо объявить один раз где-нибудь в осн теле программы и не париться с этими добавить-убавить?

mooncar
21.02.2011, 21:11
dark, если что-то новое загружаешь в MAINPATH.RESTOR с помощью MCL, то все переменные, заданные свойства и функции стираются.
Вообще, я обычно включаю одного слушателя где-нибудь в начале и не парюсь. Иногда, если слушатель сложный, ресурсоемкий или если проект предполагает множество слушателей, тогда делаю доьбавление / удаление.

А по твоему коду, я бы и обработчика onMouseDown не определял внутри другого обработчика. Назначил бы ссылкой - да.

dark256
21.02.2011, 21:14
Да я вот понимаю что он ВСЕ затирает. Поэтому создаю заново... нда... хм.... ну в общем видимо, да не стоит париться. Сделаю глобальным... чтоб им всем пусто было....
Просто интересно на чем оно в данном случае спотыкается. вот :)