Показать сообщение отдельно
Старый 19.12.2006, 17:33
vento вне форума Посмотреть профиль Отправить личное сообщение для vento Найти все сообщения от vento
  № 9  
Ответить с цитированием
vento

Регистрация: Feb 2006
Сообщений: 16
Кажется разобрался.

Изначально у меня было так:
1. в бибилиотеке находятся: ScrollPane, mcEmpt (с линками)
2. в тайм лайн основной сцены:
Код:
this.createObject("ScrollPane", "csp", this.getNextHighestDepth());
csp.setSize(Stage.width,Stage.height);
csp.move(0,0, true);
csp.contentPath = "mcEmpt";
3. в тайм лайн mcEmpt (строится диаграмма, данные для которой подгружаются в виде XML-файла):
Код:
var doc:XML = new XML();		// Источник данных
var mcLines:MovieClip = this;		
// ^ Люблю работать с именованными указателями
// хотя можно и так: var mcLines:MovieClip = this.createEmptyMovieClip("mcLines", this.getNextHighestDepth());
// и дальше использовать mcLines как использовал c учетом более глубокой вложенности. В общем это не проблема отрисовки полос прокрутки в ScrollPane.

trace(targetPath(this));	// _level0.csp.spContentHolder
trace(targetPath(mcLines));	// _level0.csp.spContentHolder или _level0.csp.spContentHolder.mcLines если через this.createEmptyMovieClip

doc.onLoad = function (success:Boolean)
{
	// Рисуем линиии на мувике mcLines черным цветом с прозрачностью 50% и минимальной толщиной 
	drawLines(mcLines, 0x000000, 50, 0);		
};
В результате на основной сцене создавался контрол СкролПане и в нем рисовались линии, но полос прокруток небыло, хотя линии уходили за область (это точно).

Теоретически, чтобы решить проблему, необходимо вызвать метод redraw у компонента скролПане после прорисовки. Правильно было бы использовать событие complete того же скролПане. Однако оно (событие) не срабатывает. Вот код который я добавил в таймлайн основной сцены для обработки события:
Код:
var cspCompleteListener:Object = new Object();
cspCompleteListener.complete = function() {
	trace("Загрузка завершена.");		// Это сообщение не появляется
};
csp.addEventListener("complete", cspCompleteListener);
тогда я изменил содержимое скрипта в таймлайн mcEmpt в событии doc.onLoad:
Код:
	...
	// Рисуем линиии на мувике mcLines черным цветом с прозрачностью 50% и минимальной толщиной 
	...
	mcLines._parent.redraw(true);	// Или mcLines._parent._parent.redraw(true); если mcLines через this.createEmptyMovieClip
	...
после этого прорисовываются скролы и можно смотреть все содержимое.

Вопрос знатокам: почему может не работать событие complete?