PDA

Просмотр полной версии : Модули, ModuleBase и "передача компонента" приложению


aciddream
01.08.2008, 21:43
Здравствуйте!

Подскажите пожалуйста новичку!

Есть основное приложение, подгружающее различные модули.
Модули реализуют интерфейс (вот кусок его):

public interface IAlbum extends IEventDispatcher {
function get loginBox():UIComponent;
}


Для одного из модулей создан mxml компонент на основе Panel
Вот кусок кода модуля:


public class SampleAlbum extends ModuleBase implements IAlbum,IFlexModuleFactory {

private var _box:LBox; //Объект mxml компонента

public function SampleAlbum() {
_box = new LBox();
}

public function get loginBox():UIComponent {
return _box;
}

}


В основном приложении, после загрузки, создания объекта, получения интерфейса и пр. делается:


addChild(mInstance.loginBox);


Во время выполнения выкидывается исключение попытки обращения к null внутри Panel.as, где-то в районе формирования заголовка.

Если сделать:

addChild(mInstance.loginBox as. mx.containers.Panel);

то все работает нормально и форма появляется.

То есть "полиморфизм" где-то сломался :О)

Подскажите пожалуйста, что я делаю не так?

Спасибо!

JesterAntik
04.08.2008, 11:31
Просто в начале основного приложения подключи import mx.containers.Panel

aciddream
04.08.2008, 11:45
Не - не прокатило.
Но, это не круто, все равно.
Потому как основное приложение не должно знать, на основании какого контрола сделан интерфейс в модуле. В данном - панель, а, если в другом VBox будет? Перекомпилять с включением еще одного модуля...

Возможно, дело в том, что модуль на основе ModuleBase - то есть он ActionScript. С другой стороны, в него включается компонент - то есть фреймворк, по-идее, должен бы загрузиться.

С другой стороны, дело и не во фреймворке, скорее всего, так как включение панели по твоей схеме не прокатило. Скорее всего - там какой-нибудь parent некорректно определяется при создании контрола в actionscript модуле, который не имеет визуального представления.

Чичас в исходник полезу, короче говоря :О)

aciddream
05.08.2008, 16:02
Забил, и сделал на основе Module...