Показать сообщение отдельно
Старый 27.09.2014, 10:33
razve вне форума Посмотреть профиль Отправить личное сообщение для razve Найти все сообщения от razve
  № 1  
Ответить с цитированием
razve
 
Аватар для razve

Регистрация: Jun 2014
Сообщений: 52
По умолчанию Прокрутка текста, cacheAsBitmap

Перевел урок по прокрутке текста в динамическом поле с AS 3.0 на AS 2.0. Все получилось.
Вместо текстового поля аттачу небольшие мувики с текстовым полем в них. Если мувиков немного - все работает нормально. Если много - они исчезают или не работает маска. В справке нашел такое объяснение:
"Подложка (кэшированное растровое изображение) не создается даже в том случае, когда cacheAsBitmap присваивается значение true, если размер растрового изображения превышает 2880 в ширину или в высоту".
Как можно обойти это ограничение?
Здесь в коде я описал как пытался, что-то изобразить, но получается все равно только кое-что.
Код AS1/AS2:
import flash.geom.Rectangle;
quan = 160;
function creat() {
	this.createEmptyMovieClip("txt", this.getNextHighestDepth(), 0, 0);
	attachMovie("masker", "masker", this.getNextHighestDepth(), {_x:fonlist._x, _y:fonlist._y+2});
	masker.cacheAsBitmap = true;
	txt.cacheAsBitmap = true;
	txt.setMask(masker);
	masker._width = fonlist._width;
	masker._height = fonlist._height-3;
	for (i=0; i<=quan; i++) {
		txt.attachMovie("mc", "mc"+i, i, {_x:0, _y:i*15});
		txt["mc"+i].t.text = i;
	}
           if (txt._height<2800) {
		txt.scrollRect = new Rectangle(0, 0, txt._width, txt._height);
	} else {
		txt.scrollRect = new Rectangle(0, 0, txt._width, 15*20);
           //если в условие "высота 2880" контейнер не вписывается,
           //то я задаю предварительную небольшую его высоту, 15 - высота одного мувика
	}
}
creat();
//
function moveHandler() {
	var more = quan*txt.mc0._height-txt.mc0._height*20;
	txt.scrollRect = new Rectangle(0, 0, txt._width, more);
           //этими двумя строчками создаю контейнер по всей высоте мувика txt,
           //получается, но цифры в текстовых полях видны, а мувики пропадают,
           //кроме первого; также если добавить полоску выделения и возможность выбора,
           //то после клика на каком-либо мувике и фиксирования на нем полоски выделения,
           //при прокрутке вниз эта полоска не прячется под маску, хотя мувики под ней не видны
	var rect:Rectangle = txt.scrollRect;
	var percent:Number = scrollBar.scroller._y/(scrollBar.scrollLine._height-scrollBar.scroller._height)*(rect.height-masker._height);
	rect.y = percent;
	txt.scrollRect = rect;
}