Форум 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)
-   -   Движение textField (http://www.flasher.ru/forum/showthread.php?t=82054)

CloudTEmple 04.07.2006 15:47

Движение textField
 
доброго вам времени суток.
У меня такая проблема. Из хмл файла грузится в мувик текст, который потом рассовывется в массив.
Задача заключается в том, чтобы брать текст из массива по порядку и вставлять его в динамическое текстовое поле, после этого двигать это поле.
У меня на этом этапе произошла загвоздка. Получилось так, что у меня
.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 делать:)

iNils 04.07.2006 16:18

В обоих случаях у вас 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 останавливался и ждал пока не проиграет мувик??

iNils 04.07.2006 17:54

Я так и не понял зачем вы два onEnterFrame используете?

CloudTEmple 04.07.2006 21:58

все разрешилось:)


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

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