Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Как корректно прикрепить ScrollBar програмно?
Flash Zone Forum > Macromedia Flash > ActionScript
Дож
Уважаемые флешеры, доброго времени суток!
Это новичок вас тревожит...
Прблема в следущем:
В первом и единственном пока кадре лок проекта создаём два клипа (тащим из библиотеки),
В одном из них создаём тестовое поле (програмно) и тут же(первый вариант)
кодом из кадра главной шкалы пытаюсь прикрепить scrollBar и ничего не выходит, совсем ничего
(Впервые позволил себе код написать из книги до конца не смог разобраться в нём)
и так фрагмент:
Код
this.attachMovie("ctrP_mcl", "ctrP1_mcl", 1);
//выводим на сцену контейнер для главного экр: /ctrP1_mcl/
ctrP1_mcl._x = 520;
ctrP1_mcl._y = 400;
ctrP1_mcl._height = 690;
ctrP1_mcl._width = 850;
trace(ctrP1_mcl);
ctrP1_mcl.attachMovie("cont1_mcl", "contf_mcl", 0);
//прикрепляем пустой клип для фото к главному экр
trace(ctrP1_mcl.contf_mcl._x);
trace(ctrP1_mcl.contf_mcl._y);
ctrP1_mcl.createTextField("fld_txt", 1, 100, -320, 300, 400);
//создаём в главном экр текстовое поле:/ctrP1_mcl.fld_txt/
ctrP1_mcl.fld_txt.border = true;
//Включаем отображение рамки
ctrP1_mcl.fld_txt.background = true;
//Включаем отображение заднего фона
ctrP1_mcl.fld_txt.wordWrap = true;
//Активизируем режим переноса по словам
ctrP1_mcl.fld_txt.backgroundColor = 0xFFCCCC;
//цвет фона текстового поля
ctrP1_mcl.fld_txt.text="nbmjgkjgj"

var myFormat:TextFormat = new TextFormat();

myFormat.font="Arial";
myFormat.size=38;
ctrP1_mcl.fld_txt.setTextFormat (myFormat);
import mx.controls.UIScrollBar;
createClassObject(UIScrollBar,"scrlBar", 5);
scrlBar.setScrollTarget (ctrP1_mcl.fld_txt);
my_sb.horizontal=false;
scrlBar.size(18, ctrP1_mcl.fld_txt._height);
scrlBar.move(ctrP1_mcl.fld_txt + ctrP1_mcl.fld_txt._width, ctrP1_mcl.fld_txt._y);
scrlBar.lineScrollSize = 2;
scrlBar.pageScrollSize = 5;
//ctrP1_mcl.fld_txt._alpha=50;
trace(ctrP1_mcl.fld_txt._alpha);
trace(ctrP1_mcl.fld_txt.type);

далее был второй вариант:
отключаю блок кода создания текстового поля и скрола и на
линейке клипа ctrP1_mcl пишу следующее:
Код
this.createTextField("fld_txt", 1, 100, -320, 300, 400);
//создаём в главном экр текстовое поле:/fld_txt/
fld_txt.border = true;
fld_txt.background = true;
fld_txt.wordWrap = true;

fld_txt.backgroundColor = 0xFFCC70;
//цвет фона текстового поля
fld_txt.text="slova slova slova slova";
var myFormat:TextFormat = new TextFormat();

myFormat.font="Arial";
myFormat.size=20;
fld_txt.setTextFormat (myFormat);
//////
import mx.controls.UIScrollBar;
createClassObject(UIScrollBar,"scrlBar",0);
scrlBar.setScrollTarget(fld_txt);
scrlBar.horizontal=false;
scrlBar.size(18, fld_txt._height);
scrlBar.move(fld_txt + fld_txt._width, mcl.fld_txt._y);
scrlBar.lineScrollSize = 2;
scrlBar.pageScrollSize = 5;
trace("prokrut:"+scrlBar);
trace("pole:"+fld.txt)


Действительно скрол появляется но почему-то вне поля, совершенно в произвольном месте.
Если не лень помогите пожалуйста. Ещё честно говоря пытался по пяти книжкам понять что делает этот фрагмент: import mx.controls.UIScrollBar; - не понял, может в этом загвоздка?
Scooter
Кароч я не стал читать что ты тут написал(уж слишком много biggrin.gif ),но понял в чем проблема...
Я те дам свой код попробуй его !
Но для начала ты должен вынести компонент UIScrollBar(Window ->Components) в библеотеку(не создавая его экземпляра на сцене) и создать в кадре следующий код :

Код
//Создаем текстовый блог
this.createTextField ("txt",2,200,20,100,200);
txt.wordWrap = true;
txt.text = "...Ваш текст...";
//Импортируем управляющий класс компонента из пакета mx.controls (вот еще один ответ на твой вопрос =) )
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;


Вроде все должно работать,попробуй,будут вопросы задавай!
Дож
Цитата
Но для начала ты должен вынести компонент UIScrollBar(Window ->Components) в библеотеку(не создавая его экземпляра на сцене)

это было сделано сразу. Проанализировал твой код, он один к одному с моим, но
1. я создаю текстовый блог в клипе кодом из главной (может в этом пробл?)
вместо
Цитата
Код
//Создаем текстовый блог
this.createTextField ("txt",2,200,20,100,200);

пишу
Код
ctrP1_mcl.createTextField("fld_txt", 1, 100, -320, 300, 400);

и в дальнейшем для прикрепления срола

Код
scrlBar.setScrollTarget (ctrP1_mcl.fld_txt);

и ничего. Что нетак сделал не пойму?!
Тем неменее спасибо, что нашли время ответить. (Кстати случайно тему открыл в несоответствующем разделе)
Scooter
Вполне возможно,попробуй исправь.
Я создаю в кадре ,а ты создаешь в клипе =)
Дож
Цитата(Scooter @ 6.08.2007 - 14:04) *
Я создаю в кадре ,а ты создаешь в клипе =)


Да но у меня и второй вариант точно такого же кода(предварительно отключив такой же код в кадре)
который я пишу на линейке самого клипа только пути к текстовому полю везде ставлю
не
Код
ctrP1_mcl.fld_txt

а
Код
fld_txt

и ... появляется этот скрол совершенно в стороне от текстового поля
Русская версия IP.Board © 2001-2009 IPS, Inc.