Показать сообщение отдельно
Старый 31.08.2008, 00:15
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 8  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Цитата:
Сообщение от ramshteks Посмотреть сообщение
прости уж что все урезал. и извини если уилоадер был нужен, но так хотя бы рабоает.
Я знаю, как сделать так, чтобы обычный ScrollPane работал
Проблема именно во взаимодействии UILoader и ScrollPane.
В частности из-за того, что в классе UIComponent есть методы:
Код:
protected function callLater(fn:Function):void {
if (inCallLaterPhase) { return; }
...
}
и
Код:
private function callLaterDispatcher(event:Event):void {
...
inCallLaterPhase = true;			
var methods:Dictionary = callLaterMethods;
for (var method:Object in methods) {
method();
delete(methods[method]);
}
inCallLaterPhase = false;
}
UILoader вызывает событие ComponentEvent.RESIZE в конце метода draw, однако в это время статичная переменная inCallLaterPhase класса UIComponent равна true, поэтому функция CallLater класса ScrollPane не срабатывает.

Выход в принципе есть. Перенести присвоение inCallLaterPhase = false в методе callLaterDispatcher класса UIComponent в конец метода draw этого же класса. Но мне как-то не очень хочется править компоненту adobe, мало ли, какие-нибудь еще глюки могут возникнуть из-за этого.