Просмотр полной версии : Движение textField
CloudTEmple
04.07.2006, 15:47
доброго вам времени суток.
У меня такая проблема. Из хмл файла грузится в мувик текст, который потом рассовывется в массив.
Задача заключается в том, чтобы брать текст из массива по порядку и вставлять его в динамическое текстовое поле, после этого двигать это поле.
У меня на этом этапе произошла загвоздка. Получилось так, что у меня
.onEnterFrame один вложен в другой, в первом я изменяю переменную для того, чтобы выбирать из массива, а во втором .onEnterFrame у меня происходит движение текстового поля.
Проблемма заключается в том, что я никак не могу выйти из второго .onEnterFrame, он у меня сидит в мною определенной функции, но по return функция никак выходить не хочет. Подскажите, что делать.
Samodelkin
04.07.2006, 15:54
Код покажи.
motor4ik
04.07.2006, 16:00
жесть, зачем onEnterFrame пользовать?...делай delete onEnterFrame;
а вообще пользуй setInterval()
CloudTEmple
04.07.2006, 16:07
function startT(success) {
if (success == true) {
rootNode = myXML.firstChild;
XMLParsing(rootNode);
_root.onEnterFrame = function() {
if (lang == undefined) {
lang = 2;
}
running_string(txtarray[lang][str_param], 200, 200, 5, 20, clrarray[lang][str_param]);
str_param += 1;
};
}
}
и сама функция руннинг стринг
function running_string(str_var:String, x_coord:Number, y_coord:Number, x_diff:Number, f_size:Number, str_color:String) {
t_field._x = x_coord;
this.onEnterFrame = function() {
trace(str_var);
with (this) {
createTextField("t_field", this.getNextHighestDepth(), x_coord, y_coord, 10, 10);
t_field.autoSize = true;
t_field.selectable = false;
t_field.text = str_var;
t_field._x -= x_diff;
}
var my_fmt:TextFormat = new TextFormat();
with (my_fmt) {
bold = true;
size = f_size;
color = str_color;
font = "Tahoma";
}
this.t_field.setTextFormat(my_fmt);
if ((this.t_field._x+this.t_field._width)<x_coord) {
return true;
}
};
}
а насчет setInterval() интересно. Просто я привык все с помощью onEnterFrame делать:)
В обоих случаях у вас onEnterFrame вешается на _root. И соотвественно при вызове running_string вы один onEnterFrame замещаете другим.
Я правда не понял что вы такое хитрое делаете и setInterval() тут тоже не к селу ни к городу.
CloudTEmple
04.07.2006, 16:25
да, сетинтервал не подходит... В общем, сточки должны одна за другой по порядку проплывать вдоль мувиклипа. str_param += 1; как раз отвеччает за это.
txtarray[lang][str_param] - массив определен в функции XMLParsing . он тут сейчас не у дел, потому я его не выкладывал. Массив двумерный, строчки должны быть на нескольких языках, в зависимости от нажатия кнопки в мувике будут браться различные сточки.
а куда мне его вешать, onЕnterFrame этот? Пытался создать пустой мувиклип и в него загнать текстфилд, но там тоска, ни один из циклов не ждет другого.
Зы, а почему return не работает? Ведь написано: "Команда return останавливает выполнение функции и заменяет ее на возвращаемое значение."
CloudTEmple
04.07.2006, 17:47
Я придумал схему, правда она не совсем работет. Создал мувиклип, в нем создал текстовое поле. далее
_root.onEnterFrame = function() {
if (lang == undefined) {
lang = 2;
}
my_string = txtarray[lang][str_param];
_root.attachMovie("text_mc", newtext, this.getNextHighestDepth(), {_x:100, _y:100});
str_param += 1;
if (str_param == txtarray[lang].length){
str_param = 0;
}
};
}
}
В мувике text_mc такой скрипт
this.onEnterFrame = function (){
this.tfield.text = _root.my_string;
this.tfield.autoSize = true;
this.tfield._x -=1;
if(this.tfield._x+this.tfield._width<0){
this.unloadMovie();
}
}
вопрос, как мне остановить _root.onEnterFrame = function() вот это, чтобы attachMovie останавливался и ждал пока не проиграет мувик??
Я так и не понял зачем вы два onEnterFrame используете?
CloudTEmple
04.07.2006, 21:58
все разрешилось:)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.