![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2014
Сообщений: 52
|
Перевел урок по прокрутке текста в динамическом поле с AS 3.0 на AS 2.0. Все получилось.
Вместо текстового поля аттачу небольшие мувики с текстовым полем в них. Если мувиков немного - все работает нормально. Если много - они исчезают или не работает маска. В справке нашел такое объяснение: "Подложка (кэшированное растровое изображение) не создается даже в том случае, когда cacheAsBitmap присваивается значение true, если размер растрового изображения превышает 2880 в ширину или в высоту". Как можно обойти это ограничение? Здесь в коде я описал как пытался, что-то изобразить, но получается все равно только кое-что. 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; } |
|
|||||
|
[+1.3 06.03.12]
|
Если вам требуется прокрутка блоков-картинок. И блоки должны прокручиваться в некой видимой зоне. То единственное, что бы я посоветовал, это - подгружать по мере необходимости рядом стоящие блоки с видимым и удалять все те которые попадают далеко за область видимости.
При этом конечно придется написать хитрый скролл - который будет работать с индексами блоков и их координатами. И по сути блоки не будут доходить до -2880/2800. Вы просто будете перебрасывать их на поддельные координаты. Единственное за что можно переживать - это если пользователь начнет слишком быстро дергать скролл.
__________________
http://apa-noua.com/portfolio |
|
|||||
|
Регистрация: Jun 2014
Сообщений: 52
|
Спасибо!
Попробовал так, но оказалось, нужно для каждого блока делать свою маску - текстовые поля динамические. Это меня что-то напугало) Но пока маялся нашел такой выход: В функции creat() все также создаю контейнер с небольшой высотой А в функции moveHandler() увеличиваю переменную percent: И все. Аттачу мувиков хоть 300, хоть 1000, размер txt на прокрутку никак уже не влияет. Единственное, что не получается - написать алгоритм для увеличения percent, чтобы прокрутка останавливалась на последнем мувике. Если мувиков 300, то: Если мувиков 1000, то: |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|