Форум 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=82740)

zhalexei 20.07.2006 11:39

Создание TextField в цикле
 
Ситуация вкратце такая: есть массив из n элементов. Для каждого элемента нужно создать СВОЙ TextField
Код:

for ( i = 0 ; i <= (n-1) ; i ++ )  {
 myfieldName = myArray[i]
 this.createTextField(myfieldName , 0 , 0 , 0 , myfieldwidth , 25 )
}

такой вариант не проходит, потому что в таком случае создается n TextField'ов с одинаковым именем myfieldName, а мне надо в каждое поле прописывать текст, равный значению n-го элемента массива. Подскажите, пожалуйста как быть..

iNils 20.07.2006 11:43

Смотри как изящно первая строчка пишется
Код:

for (i = 0; i < n; i++)  {
:p

По поводу сути вопроса. Имя myfieldName берется из массива myArray, что там запишешь, то в названии и получишь.

zhalexei 20.07.2006 11:58

по мне так i <= (n-1) лучше.
не понял ответа. тот код который я привел создает n одинаковых полей с названием "myfieldName". так и называются. все N. проверял :)

iNils 20.07.2006 12:21

Цитата:

Сообщение от zhalexei
по мне так i <= (n-1) лучше

Я понял, вы злостный враг оптимизация :)
Цитата:

Сообщение от zhalexei
не понял ответа. тот код который я привел создает n одинаковых полей с названием "myfieldName". так и называются. все N. проверял :)

Ах, да. У вас там глубина вечно нулевая, а надо уникальную.
Код:

n = 5;
myArray = ["txt0", "txt1", "txt2", "txt3", "txt4", "txt5"];
for (i = 0; i <= (n - 1); i++) {
        myfieldName = myArray[i];
        this.createTextField (myfieldName, i, 0, 0, myfieldwidth, 25);
}


zhalexei 20.07.2006 12:37

пасиба, заработало.. а что такое в данном случае "глубина", так и не понял? :)
теперь правда другая проблема, вполне ожидаемая возникает:
myfieldName.text="mytext";
не работает. возникает ошибка
There is no property with the name 'text'
как присвоить текст новому полю?


по поводу for..
как бы объяснить.. исключительно, имхо, может и не прав.. при такой записи:
Код:

for ( i = 0 ; i <= (n-1) ; i++ )  { //строка 1
        .......
} //строка 2

пройдя цикл в (n-1)-й раз прога не возращается на первую строку для проверки необходимости запускать цикл еще раз.

а при такой:
Код:

for ( i = 0 ; i < n ; i++ )  { //строка 1
        .......
} //строка 2

програма вернется на первую строку и убедится, что i стало равно n, а не (n-0.000001) к примеру
я не прав? :)

etc 20.07.2006 14:04

Код:

for (var i = 0; i < 6; i++) {
        var myfieldName = 'txt'+i;
        var tf = this.createTextField (myfieldName, i, 0, i*30, myfieldwidth, 25);
        tf.text = 'Any text #'+i;
}
delete i;
delete tf;
delete myfieldName;


zhalexei 20.07.2006 14:39

неа..так не работает..

iNils 20.07.2006 14:40

zhalexei, обратите внимание как другие оформляют свой код в теги, при выкладывании на форум.

zhalexei 20.07.2006 14:42

виноват, быстрым ответом просто пользуюсь.. :)

iNils 20.07.2006 14:43

Цитата:

Сообщение от zhalexei
неа..так не работает..

Код:

n = 5;
myfieldwidth = 50;
myArray = ["txt0", "txt1", "txt2", "txt3", "txt4", "txt5"];
for (i = 0; i <= (n - 1); i++) {
        myfieldName = myArray[i];
        this.createTextField (myfieldName, i, 0, i * 25, myfieldwidth, 25);
        this[myfieldName].text = i;
}



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

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