Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   програмный скроллинг (http://www.flasher.ru/forum/showthread.php?t=124239)

droch_fhoula 24.04.2009 14:55

програмный скроллинг
 
здравствуйте.
у меня появилась проблема при добавлении скроллинга к динамическому файлу подгружающему текст из вне.
при попытке добавит скролл из компонентов он просто болтается в верхнем левом углу.
вот код без скроллинга
Код AS1/AS2:

mycreateInterface = function () {
_root.createTextField("first_txt", 1, 10, 10, 530, 380);
with (first_txt) {
 border = true;
 html = true;
 wordWrap = true;
 multiline = true;
 htmlText = my_xml.childNodes[0].childNodes[0].nodeValue;
}
};
//
my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(ok) {
if (ok) {
 mycreateInterface();
}
};
my_xml.load("next.xml");

как прикрепить к нему скроллинг, тоже программно?
у меня уже даже идей не осталось.
подскажите плиз как к нему корректно UIScrollBar прикрепить.
ничего в поиске не нашла :o
так как новичек, поэтому пыталась найти подсказку в интернете.
делала по этому примеру но не то :wacko:
Код AS1/AS2:

import mx.controls.UIScrollBar;
//Динамически создаем на сцене экземпляр компонента с именем scrlBar
createClassObject(UIScrollBar,"scrlBar",5);
//Определяем принадлежность экземпляра компонента к текстовому блоку
scrlBar.setScrollTarget(txt)
//Вертикальная ориентация
my_sb.horizontal = false;
//Задаем размер компонента (по ширине и высоте)
scrlBar.setSize(12,txt._height);
//Позиционируем компонент
scrlBar.move(txt._x + txt._width, txt._y);
//Задаем количество строк (для горизонтальной прокрутки - пикселы),на которое будет выполняться прокрутка при нажатии     
//на кнопку прокрутки
scrlBar.lineScrollSize = 2;
scrlBar.pageScrollSize = 5;


Wolsh 24.04.2009 15:09

Замените вторую строчку первого кода на
Код:

var txt:TextField = _root.createTextField("first_txt", 1, 10, 10, 530, 380);

droch_fhoula 24.04.2009 18:22

все равно не работает :(

Wolsh 24.04.2009 19:48

А, так это же у Вас в теле функции, извините. Тогда перед кодом скроллбара добавьте
Код:

var txt:TextField = _root.first_txt;
Добавлено через 4 минуты
Короче говоря, Вы создаете текстфилд с именем first_txt, а в коде с присоединением скроллбара текстфилд называется просто txt - так с чего же будет работать)))

droch_fhoula 24.04.2009 21:44

нет все имена txt я переименовала на first_txt но видно я все равно что-то не так делаю.
но все равно большое вам спасибо за помощь!

ну или как к этому тексту можно приделать другой скролл?
может есть другие более работающие варианты?

Wolsh 24.04.2009 22:39

Значится, так)) (я наконец добрался домой до Флэша)
Надо затащить компонент скроллбара на сцену и дать ему имя scrlBar.
Потом удалить из кода эту строчку - createClassObject(UIScrollBar,"scrlBar",5);
Этот метод может быть вызван только у компонента, не у мувиклипа (как _root).
И все. Листает))

droch_fhoula 24.04.2009 23:08

Вложений: 1
у меня почему то листает но скроллинга не видно:o
и еще одна такая странность возникла, почему то когда много текста то у вставленной картинки видно только край:eek:
вот прикладываю исходник. посмотрите пожалуйста если у вас время найдется:rolleyes:

Wolsh 24.04.2009 23:55

Мдя, это ж надо так запариться (это я о себе - я то тестировал, написав xml прямо в коде))) А тут у Вас обычная ошибка - Вы назначаете скроллер текстовому полю, которого еще нет. Оно будет создано, когда загрузится хмлка, а скроллбару оно назначается в таргеты сразу же после команды начала загрузки)).
Так что вот такой код должен быть у Вас -
Код:

import mx.controls.UIScrollBar;
function write(ok:Boolean){
    if (ok) {
        var txt:TextField = _root.createTextField("txt", 1, 10, 10, 530, 120);
        with (txt) {
            border = true;
            html = true;
            multiline = true;
            wordWrap = true;
            htmlText = this.childNodes[0].childNodes[0].nodeValue;
        }
        scrlBar.setScrollTarget(txt)
        scrlBar.horizontal = false;
        scrlBar.setSize(12,txt._height);
        scrlBar.move(txt._x + txt._width, txt._y);
        scrlBar.lineScrollSize = 2;
        scrlBar.pageScrollSize = 5;
    }
}
var my_xml:XML = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = write;
my_xml.load("content.xml");

И еще, так, для сведения - тег <br> в html не парный. Он просто ставится один, когда нужен перенос. И желательно при этом писать его как положено в xhtml - <br/>
По поводу картинки - я не силен в этом, никогда таким не занимался)), но вобщем видно что она ставится как строка по высоте - если после нее в хмлке добавлять знаки или брейки, они располагаются справа. Если подобрать нужное количество <br/>, картинка вся покажется - но это, конечно, никуда не годится))))) Но тут я не помощник((

user123 25.04.2009 00:17

Wolsh,наскока я в курсе,писать <br/> нынче немодно.Теперь пишут <br /> ,с пробелом перед слешем.Впрочем,as2 штука древняя... :)

dimarik 25.04.2009 01:56

Страшно немного, но нафлужу не по теме.

Цитата:

у меня появилась проблема при добавлении скроллинга к динамическому файлу подгружающему текст из вне.
Динамический файл - файл созданный на стадии исполнения (runtime) какой-либо программы. В отличие от статичного файла, который создан раз и навсегда, может не иметь постоянного содержания.

Файл, подгружающий текст - это не что иное как исполняемая программа, которая умеет подгружать текст. Не менее этого.

А что же токое динамический файл, подгружающий текст. Динамический файл, подгружающий текст... Здесь немного сложнее, но мы справимся! Исходя из вышесказанного, динамический файл, подгружающий текст - это динамически созданная программа, которая умеет подгружать текст. Не менее того!

Просто на правах флуда. Просто прицепился к словам. Слова могут складываться в ладные конструкции, а иногда - не могут.


Часовой пояс GMT +4, время: 13:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.