![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2009
Адрес: Kiev
Сообщений: 66
|
Здравствуйте. Хочу сделать простенький кроссворд в первом кадре, и если человек ввел правильно слово, то он попадает на второй кадр (главной временной шкалы), и там ему написано «ура, победа!»
На простом примере взяла слово «да». Сделала два инпут поля. Одно назвала d, второе – a. Подскажите, пожалуйста, что я делаю не правильно. if (d.text=="д" && a.text=="а") { _root.gotoAndPlay(2); } Только там кнопки не будет. Как сделать,ч тоб если правильно введены буквы, сразу человек попадал на второй кадр? |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
|
|
|||||
|
Модрон-ветеринар
|
Задайте буквенным полям имена
w1_1 для первой буквы первого слова, w1_2 - вторая буква первого слова w2_1 - первая буква второго слова и т.д. Тогда можно так: var word1:String = 'да'; var word2:String = 'нет'; var total:Number = 2; //всего слов var resultArray:Array = new Array();//массив для результата проверки слова function doCheck () { сheckСontinue = false ; for (w = 1; w <= total; w++) { if (!resultArray[w]) { //если слово еще не было угадано сheckСontinue = true ; // Продолжаю проверку! resultArray[w] = true ; //нужно для проверки результатов по текущему слову (поразрядное сравнение с приращением) var wordLength:Number = _root['word' + w].length; //длина текущего слова for (letter = 0; letter < wordLength; letter++) { var trueLetter:String = _root['word' + w].charAt(letter); //буква в задуманном слове в позиции letter var inputedLetter:String = _root['w' + w + '_' + (letter + 1)].text ; //буква, введенная в проверяемую позицию var isGoodLetter:Boolean = (trueLetter == inputedLetter); //сравниваем введенное и ожидаемое resultArray[w] &= isGoodLetter; //поразрядное сравнение с приравниваем (накапливаем в цикле для слова) } if (resultArray[w]) { trace(w + ' слово угадано'); //угадано слово за номером w } } } if (!сheckСontinue) { clearInterval (chk); trace('Все разгадно!') } } chk = setInterval (doCheck, 100); В этом же цикле заодно высчитать длину слов (wordLength в коде), чтобы сократить количество промежуточных вычислений в основной функции. Наверное, не оптимально, но вариант. Можно оптимизировать - сделать не непрерывную проверку, а проверять только то слово, куда ткнули курсором. То есть действительно использовать onChanged как событие для осуществления проверки. Последний раз редактировалось mooncar; 30.01.2010 в 05:50. |
|
|||||
|
Регистрация: May 2009
Адрес: Kiev
Сообщений: 66
|
Спасибо большое всем за помощь.
Мне вот еще как вариант, написали работающий код: onEnterFrame = function(){ if (d.text=="д" and a.text=="а") { _root.gotoAndPlay(2); } } Спасибо! ![]() |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Код рабочий, но незачем в каждом кадре производить проверку. Достаточно по событию onChanged.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 15:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|