![]() |
Проблема области видимости
Привет, пишу следующий код:
Код:
m_bOk.onPress = Delegate.create(this, onOkPress);Код:
private function onOkPress():Void {Может так не "реагируют" на события в АС2? :wacko: |
а подробнее код можно? так сложно понять
|
Осталось выяснить, на что ссылается this в первой строке.
|
читайте комменты
все внутри одного класса:
Код:
/*** SettingsBox.as |
Код:
m_bOk = Button.create(m_mcBoxContainer, "buttonOk", 3);ах да...а вот это строчка есть? Код:
import mx.utils.Delegate; |
тут selectedLayout видно, а m_pPortal.init - нет
>> А с чего бы ее должно быть видно, если вы ее нигде не объявляете? =/ Поддерживаю Кразифлашера -- называть классы именами встроенных классов чревато. |
Я делаю свой класс и импортирую его, я же все тестил и это именно мой класс. Импорт делегата я ессно сделал. И я все объявляю, я же прислал кусок кода! Просто видно то одно, то другое. если я помещаю m_bOk = Button.create... в одно место, то видно одно, а в другое - другое.
|
переименнуйте класс...почти уверен, что проблема в этом
|
аааа
Переименовал в MyButton, перенес инициализацию события onPress в init():
Код:
m_bOk = MyButton.create(m_mcBoxContainer, "buttonOk", 3);Этот код: Код:
private function onOkPress():Void {Код:
onOkPress m_selectedLayout = 50.50 //это типа ок!Код:
onOkPress m_selectedLayout = 33.33.33 //это неверно! значение не изменилось, а оно у меня меняется в методе select(). Т.е. берется значение, которое я ставлю во время инициализации класса, но по правде у меня другое значение! |
Так смысл Delegate именно в этом.
|
Ну а как решать? Если я сделаю ссылку на функцию без Delegate, то эта функция не увидит поля класса!
|
Где находятся m_selectedLayout и m_pPortal?
|
Цитата:
Код:
<...> |
Значит проблема в m_pPortal.
|
Когда я кладу инициацию в draw(), то портал m_pPortal виден!
|
Тогда дежурные гадалки в отпуске. Весь код не виден, поэтому кофейная гуща не поможет.
Используйте this везде, очень полезно, особенно при таких проблемах. |
варнинг
Просто поправьте, если я что-то напишу не так:
Когда я пишу строку: Код:
m_bOk.onPress = Delegate.create(this, onOkPress);Код:
private function onOkPress():Void {Вообще это верно? :wacko: |
Ну, как говорит __etc, поставте this перед m_pPortal.
Еще - потрейсить в for-in this в onOkPress - так хоть можно будет понять, на что там this показывает. Но, опять же, я пока тут не увидел целого куска кода в котором бы наблюдалась описанная проблема =/ |
я сразу попробовал с this, ессно это не помогло. как я могу выложить сюда весь этот проект-то? там уже более 20 классов.
|
Ну так пути решения:
трейсить this. а вдруг он не там\нет такой переменной в нем. попытаться воспроизвести в сокращенном виде то, что не получается. Весь проект и не нужно. нужно только то, что не работает, а должно. |
Господа, я в шоке, но я до сих пор не решил сию проблему!! Помогите, я могу кинуть сорс, я вообще понять не могу! у меня переменная (поле класса) в некоторых методах видна, а в некоторых - нет. я делаю linkage в самом начале и после этого переменная должна быть везде видна!!! Или нет?
|
Ну, я не знаю, на каком русском языке еще написать... =) Ну, покажите неработающий код. На предыдущих двух страницах его не было. При всем желании так помочь не получится...
|
| Часовой пояс GMT +4, время: 00:34. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.