PDA

Просмотр полной версии : Функция для создания текстового поля


d0cent
31.07.2007, 05:41
Написал я функцию, что бы упростить себе работу дальнейшую с текстовыми блоками:
_global.textLoad = function(path, aligned, q, w, e, r, t){


_root.fon.createTextField('text1', q, w, e, r, t);

var my_format:TextFormat = new TextFormat();
my_format.font = "Arial";
my_format.align = aligned;

var my_lv2:LoadVars = new LoadVars();
my_lv2.onData = function(txt2:String):Void {
_root.fon.text1.wordWrap = true;
_root.fon.text1.textColor=0xCCCCCC;
_root.fon.text1.html=true;
// _root.fon.text1.embedFonts = true;
_root.fon.text1.multiline = true;
_root.fon.text1.setNewTextFormat(my_format);
_root.fon.text1.htmlText = txt2;

};
my_lv2.load(path);
}

Единственная сложность которую пока никак не могу преодолеть, это имя текстового поля. Оно везде там пишется как text1, а в самом createTextField записывается как 'text1' (с ковычками, так как имя). Как бы это тоже правильно в параметр функции запихнуть что бы передавать потом? А то не получается если надо в одном месте сразу два-три текстфилда создать (имя то одно и то же, а надо разное).

CorC
31.07.2007, 10:06
function textLoad(MC:MovieClip, Name:String, path, aligned, q, w, e, r, t){
MC.createTextField(Name, q, w, e, r, t);
var my_format:TextFormat = new TextFormat();
my_format.font = "Arial";
my_format.align = aligned;
var my_lv2:LoadVars = new LoadVars();
my_lv2.onData = function(txt2:String):Void {
MC[Name].wordWrap = true;
MC[Name].textColor=0xCCCCCC;
MC[Name].html=true;
// MC[Name].embedFonts = true;
MC[Name].multiline = true;
MC[Name].setNewTextFormat(my_format);
MC[Name].htmlText = txt2;
};
my_lv2.load(path);
}
Можно в переменную MC[Name] запехать.

etc
31.07.2007, 10:27
Ну так передавай имя, в чем проблема? createTextField возвращает ссылку на созданное поле, которую можно использовать для обращения к текстовому полю.

d0cent
01.08.2007, 04:12
А почему-то если попытаться создать два текстфилда на одном фоне, то создается только последнее из них:
textLoad(_root.fon, 'zab', "textfiles/zabitoe.html", "right", 10, 10, 10, 190, 110);
textLoad(_root.fon, 'ind', "textfiles/industrial.html", "right", 10, 10, 120, 190, 110);

Если в функцию впихнуть trace(MC[Name]); в первом случае выдает undefined, во фтором как и положено _level0.instance1.menu.fon.ind

Kikasso
01.08.2007, 04:35
Ну так глубину менять же надо. Второе поле вышибает первое.

d0cent
01.08.2007, 05:16
Ну так глубину менять же надо. Второе поле вышибает первое.

А как это делать?

Kikasso
01.08.2007, 05:38
createTextField -> поиск в хелпе. Обратите внимание, какие параметры пронимает функция. Конкретно второй по счету.

CorC
01.08.2007, 09:56
Вместо q в коде в посте 2 надо написать MC.getNextHighestDepth()

etc
01.08.2007, 10:15
CorC, угу. При наличии компонентов оно плавно перестанет работать.