Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.04.2015, 23:23
Sparrow_Dreamer вне форума Посмотреть профиль Отправить личное сообщение для Sparrow_Dreamer Найти все сообщения от Sparrow_Dreamer
  № 1  
Ответить с цитированием
Sparrow_Dreamer

Регистрация: Apr 2015
Сообщений: 4
По умолчанию Действие с циклами и массивами

Доброго времени суток! Я только начинаю изучать флеш, сильно не ругайтесь на мои глуповатые вопросы.
Суть такова.
Хочу создать массив с определенным количеством значений (текстовых). И есть текстовое поле для ввода данных. Нам необходимо проверять значение текстового поля, сверяя с каждым элементом массива. В зависимости от результата (равно - 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);
	}
}
Извиняюсь за плоховатый код, за лишние переменные и вообще за мусор в коде, я новичок))

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

Старый 01.05.2015, 09:24
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 2  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Проверить все элементы массива можно так:
Код 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

Старый 01.05.2015, 17:32
Sparrow_Dreamer вне форума Посмотреть профиль Отправить личное сообщение для Sparrow_Dreamer Найти все сообщения от Sparrow_Dreamer
  № 3  
Ответить с цитированием
Sparrow_Dreamer

Регистрация: Apr 2015
Сообщений: 4
Не понимаю всего кода(
Код 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++;
Буду благодарен за помощь!


Последний раз редактировалось Sparrow_Dreamer; 01.05.2015 в 17:43.
Старый 01.05.2015, 17:53
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 4  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Вместо txtname надо txtname.text

Старый 01.05.2015, 18:03
Sparrow_Dreamer вне форума Посмотреть профиль Отправить личное сообщение для Sparrow_Dreamer Найти все сообщения от Sparrow_Dreamer
  № 5  
Ответить с цитированием
Sparrow_Dreamer

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

Старый 01.05.2015, 18:36
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 6  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Может этот код поможет понять как работают циклы.

Код 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);
    }
}

Старый 01.05.2015, 19:08
Sparrow_Dreamer вне форума Посмотреть профиль Отправить личное сообщение для Sparrow_Dreamer Найти все сообщения от Sparrow_Dreamer
  № 7  
Ответить с цитированием
Sparrow_Dreamer

Регистрация: Apr 2015
Сообщений: 4
Не понимаю, почему он трейсит мне ВСЕ, а не результат в зависимости от данных. Трейсит все возможные значения(

Старый 05.05.2015, 00:55
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 8  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 74
Потому что у вас длина массива равна 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, время: 15:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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