Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Действие с циклами и массивами (http://www.flasher.ru/forum/showthread.php?t=210750)

Sparrow_Dreamer 30.04.2015 23:23

Действие с циклами и массивами
 
Доброго времени суток! Я только начинаю изучать флеш, сильно не ругайтесь на мои глуповатые вопросы.
Суть такова.
Хочу создать массив с определенным количеством значений (текстовых). И есть текстовое поле для ввода данных. Нам необходимо проверять значение текстового поля, сверяя с каждым элементом массива. В зависимости от результата (равно - 1 балл, не равно - 0 баллов) сохранять значение в переменную.
Т.е. ,есть массив
Код AS3:

var s_zn: Array = ['padres', 'pariente', 'abuelo', 'abuela'];

И, я не пойму как создать цикл проверки введенных данных в текстовое поле.

Есть готовый рабочий код, через if-ы:
Код AS3:

import flash.ui.Mouse;
import flash.events.MouseEvent;
 
stop();
 
var resultat: Number = 0;
var resultat1:Number = 0;
var padres: String = 'padres';
var pariente1: String = 'pariente';
end.visible = false;
pariente.visible = false;
txt1name.visible = false;
proverka1.visible = false;
gomenu.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_2);
function fl_ClickToGoToWebPage_2(event:MouseEvent):void
{
gotoAndStop(1);
}
 
proverka.addEventListener(MouseEvent.CLICK, tio);
function tio (event:MouseEvent):void
{
                if (txtname.text == padres) {
        resultat += 1;
        trace(resultat);
        end.visible = false;
        padrees.visible = false;
        txtname.visible = false;
        proverka.visible = false;
        pariente.visible = true;
        txt1name.visible = true;
        proverka1.visible = true;
}
else {
        resultat = 0;
                padrees.visible = false;
        txtname.visible = false;
        proverka.visible = false;
        pariente.visible = true;
        txt1name.visible = true;
        proverka1.visible = true;
        resultat = 0;
        trace(resultat);
}
}
proverka1.addEventListener(MouseEvent.CLICK, tio1)
function tio1 (event:MouseEvent):void {
        if (txt1name.text == pariente1) {
                resultat1 = resultat + 1;
                                end.visible = true;
                                        end.text = 'Поздравляем! Ваш результат ' + resultat1 + '/2';
                                        img.visible = false;
                                        vvod.visible = false;
                padrees.visible = false;
        txtname.visible = false;
        proverka.visible = false;
        pariente.visible = false;
        txt1name.visible = false;
        proverka1.visible = false;
        txtname1.visible = false;
        trace(resultat1);
        }
        else {
                end.text = 'Поздравляем! Ваш результат ' + resultat1 + '/2';
                vvod.visible = false;
                img.visible = false;
                end.visible = true;
                txtname1.visible = false;
                padrees.visible = false;
        txtname.visible = false;
        proverka.visible = false;
        pariente.visible = false;
        txt1name.visible = false;
        proverka1.visible = false;
        trace(resultat1);
        }
}

Извиняюсь за плоховатый код, за лишние переменные и вообще за мусор в коде, я новичок))

Плохо понимаю, как можно сделать цикл. Гуглил, но толкового не нашел.

callme 01.05.2015 09:24

Проверить все элементы массива можно так:
Код AS3:

for (var i:int = 0; i < s_zn.length; i++)
{
    if (s_zn[i] == 'blabla')
    {
        resultat = resultat + 1;
    }
}

Можете еще это почитать
http://help.adobe.com/ru_RU/FlashPla...t/3/Array.html

Sparrow_Dreamer 01.05.2015 17:32

Не понимаю всего кода(
Код AS3:

if (s_zn[i] == 'blabla')

Почему здесь [i], а не число элементов в круглых скобках? И что за текст 'blabla'?

Добавлено через 9 минут
Код AS3:

var s_zn: Array = ['padres', 'pariente', 'abuelo', 'abuela'];
var resultat: Number = 0;
button.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void
{
for (var i:int = 0; i < s_zn.length; i++)
{
    if (txtname == s_zn[i])
    {
        resultat ++;
                trace(resultat);
    }
        else {
                trace(resultat);
        }
}
}

Таким образом трейсит четыре нуля. А мне же надо что-то типа "проверяем, введено ли что-то в строку ввода (txtname), если до этого ничего не вводилось, сравниваем с первым значением массива, если вводилось, то сравниваем со значением, которое следует после того, с которым уже сверились".
Т.е. однотипное действие проверки данных и
Код AS3:

resultat++;

Буду благодарен за помощь!

callme 01.05.2015 17:53

Вместо txtname надо txtname.text

Sparrow_Dreamer 01.05.2015 18:03

Вложений: 1
Да, помогло, спасибо!
Но тогда в трейсе 4 раза выводится "1". (
Еще раз тыкаю на кнопку - получается что он сравнивает значение с s_zn[0], а не с s_zn[1]. И выдает 4 раза цифру 2.
Прикрепляю файл.
Или еще раз нужно прописать if...?
И так нужное к-во раз?

callme 01.05.2015 18:36

Может этот код поможет понять как работают циклы.

Код AS3:

for (var i:int = 0; i < s_zn.length; i++)
{
    trace('i=', i);
    if (txtname.text == s_zn[i])
    {
        resultat ++;
        trace('if');
        trace(resultat);
    }
    else {
        trace('else');
        trace(resultat);
    }
}


Sparrow_Dreamer 01.05.2015 19:08

Не понимаю, почему он трейсит мне ВСЕ, а не результат в зависимости от данных. Трейсит все возможные значения(

artem2033 05.05.2015 00:55

Потому что у вас длина массива равна 4. Trace, что находиться в цикле, выводит результат равный длине массива. Чтобы он выводил одно значение нужно сделать так:
Код AS3:

for (var i:int = 0; i < s_zn.length; i++)
{
    if (txtname.text == s_zn[i])
    {
        resultat ++;
    }
}
 
trace(resultat); //Если нужно вывести один раз значение resultat.



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

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