PDA

Просмотр полной версии : ComboBox, не слушается событие


$mival
09.07.2007, 14:17
Почему не работает сей код?: (учитывая, что ссылка на ComboBox в переменной "s" правильная) (AS2)

import mx.controls.ComboBox;
import mx.events.EventDispatcher;

class mainAd.ChRazdel extends MovieClip
{

private var s:ComboBox;

public function ChRazdel()
{
s = this["s"];
init();
}

private function init()
{
var cbListener:Object = new Object();
cbListener.change = function(event_obj:Object) {
trace("Value changed to: "+event_obj.target.selectedItem.label);
};
s.addEventListener("change", cbListener);
}
}

etc
09.07.2007, 14:20
Зачем этот мусорный listener?
Зачем строка s = this["s"]?

$mival
09.07.2007, 14:53
всё что в init() - пример из хелпа.
s = this["s"]; ...
по задумке this - это клип, в который вложен Комбобокс, а s - это ссылка на сам бокс.

etc
09.07.2007, 14:59
Эта строка просто не нужна.
Используй onLoad, потому как компонент не успевает проинициализироваться.

$mival
09.07.2007, 16:01
точно не нужна ))
а у бокса (http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00003195.html) нет события onLoad или подобного

etc
09.07.2007, 16:04
А я про ComboBox говорю. Надо описать метод onLoad в классе и там уже подписываться на события.

$mival
09.07.2007, 16:08
можно хотя бы образно код? я не совсем понимаю о чем речь.
то есть нужно создать Object - обработчик события onLoad и прогнать через Диспатчер?

типа того:

var lis:Object = new Object();
var ths:Object = this;
lis.onLoad = function(event_obj:Object) {
ths.init();
};
ss.addEventListener("onLoad", lis);

etc
09.07.2007, 16:29
Просто переименуй init в onLoad. Только не надо его вызывать в конструкторе, оно само вызовется, когда нужно.

$mival
09.07.2007, 16:42
хорошо. всё работает.