![]() |
|
||||||||||
|
|||||
|
Привет, пишу следующий код:
где m_bOk - мувик (кнопка OK), а onOkPress: Проблема в том, что в зависимости от того, где находится первый кусок кода (m_bOk.onPress =...) функция onOkPress по-разному видит из нее Например, в одном случае не видит m_pPortal.init, в другом - m_selectedLayout.Может так не "реагируют" на события в АС2? ![]() |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
а подробнее код можно? так сложно понять
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Осталось выяснить, на что ссылается this в первой строке.
|
|
|||||
|
все внутри одного класса:
/*** SettingsBox.as
* @author Eugene Nepomnyaschy
*/
class com.<...>.SettingsBox extends VisibleComponent
{
<...>
private var m_bOk:Button;
private var m_bCancel:Button; //Это мой класс, а не встроенный
<...>
static public function create(pOwner:MovieClip, strName:String, nDepth:Number):SettingsBox {
pOwner.createEmptyMovieClip(strName, nDepth);
pOwner[strName].__proto__ = new SettingsBox(pOwner[strName]);
return pOwner[strName];
}
public function SettingsBox(pThis:MovieClip) {
super(pThis);
init();
}
public function linkage(pPortal:Portal):Void {
m_pPortal = pPortal;
}
private function init():Void {
<...>
m_bOk = Button.create(m_mcBoxContainer, "buttonOk", 3);
m_bOk.setSize(100, 20);
m_bOk.setText("Ok");
m_bCancel = Button.create(m_mcBoxContainer, "buttonCancel", 4);
m_bCancel.setSize(100, 20);
m_bCancel.setText("Cancel");
m_bCancel.onPress = Delegate.create(this, onCancelPress); //тут же должен для кнопки ОК, но я его убрал в "более поздние" функции, т.к. отсюда он вообще ничего не видит (из того, что надо)
<...>
}
private function onOkPress():Void {
trace("onOkPress "+m_selectedLayout); //тут selectedLayout видно, а m_pPortal.init - нет ((
m_pPortal.init(m_selectedLayout);
kill();
}
private function onCancelPress():Void {
kill();
}
public function select(sLayoutType:String):Void {
var nIndex:Number;
<...>
deselectAll();
m_aLayouts[nIndex].select();
m_selectedLayout = sLayoutType;
m_bOk.onPress = Delegate.create(this, onOkPress);
}
}
Последний раз редактировалось enepx; 22.01.2008 в 18:25. |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
начнём с того, что не надо обзывать свои классы названиями встроенных классов. Ищите внутри Button проблему. Скорее всего она там
ах да...а вот это строчка есть? |
|
|||||
|
Modus ponens
|
тут selectedLayout видно, а m_pPortal.init - нет
>> А с чего бы ее должно быть видно, если вы ее нигде не объявляете? =/ Поддерживаю Кразифлашера -- называть классы именами встроенных классов чревато.
__________________
Hell is the possibility of sanity |
|
|||||
|
Я делаю свой класс и импортирую его, я же все тестил и это именно мой класс. Импорт делегата я ессно сделал. И я все объявляю, я же прислал кусок кода! Просто видно то одно, то другое. если я помещаю m_bOk = Button.create... в одно место, то видно одно, а в другое - другое.
|
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
переименнуйте класс...почти уверен, что проблема в этом
|
|
|||||
|
Переименовал в MyButton, перенес инициализацию события onPress в init():
m_bOk = MyButton.create(m_mcBoxContainer, "buttonOk", 3);
m_bOk.setSize(100, 20);
m_bOk.setText("Ok");
m_bOk.onPress = Delegate.create(this, onOkPress);
m_bCancel = MyButton.create(m_mcBoxContainer, "buttonCancel", 4);
m_bCancel.setSize(100, 20);
m_bCancel.setText("Cancel");
m_bCancel.onPress = Delegate.create(this, onCancelPress);
Этот код: private function onOkPress():Void {
trace("onOkPress m_selectedLayout = "+m_selectedLayout);
trace("onOkPress m_pPortal.init = "+m_pPortal.init);
m_pPortal.init(m_selectedLayout);
kill();
}
Если перемещаю инициализацию m_bOk.onPress в метод draw() моего класса, то в output: onOkPress m_selectedLayout = 33.33.33 //это неверно! значение не изменилось, а оно у меня меняется в методе select(). Т.е. берется значение, которое я ставлю во время инициализации класса, но по правде у меня другое значение! onOkPress m_pPortal.init = [type Function] ![]() Последний раз редактировалось enepx; 24.01.2008 в 12:23. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|