PDA

Просмотр полной версии : Как сделать ТЕСТ во Flash MX 2004?


AmaltheaJ5
27.03.2007, 11:25
Я делаю как бы тест. В 1 кадре выскакивает 1 фрукт, мы должны ввести его название в дин. поле UserEntry, если правильно то message = "Правильно!", иначе message ="Не правильно", затем хотелось бы сделать задержку, чтобы пользователь успел прочитать правильно он ввел название фрукта или нет, а затем перейти на следующий кадр с другим фруктом.
Кнопке я задаю такой код (но он работает не так как надо, а задержку вообще не знаю как делать):
//
on (release) {
slovo=userEntry;
if (frame=1 and slovo=="cherry") {
message = "Правильно!";
nextFrame();
} else message ="Не правильно"
if (frame=2 and slovo=="apple") {
message = "Правильно!";
nextFrame();
} else message ="Не правильно";
и т.д.
}

iNils
27.03.2007, 12:41
В вашем коде куча ошибок. Смотрите пример.

CorC
27.03.2007, 12:42
для паузы вместо nextFrame

setTimeout(nextFrame,2000);


а про "работает не так как надо" это пока непонятно :)

AmaltheaJ5
27.03.2007, 13:18
Спасибо за testF.zip, жаль только textF.fla у меня не открывается
"Unexpected file format"

CorC
27.03.2007, 13:24
просто под 8 написан
пересохранил:

AmaltheaJ5
28.03.2007, 10:20
Протестировала ваш код, но есть еще вопросы.
Оператор
//
setTimeout (_root, "hideMessage", 1000, flag);

в данном случае не срабатывает, т.е. нет перехода на следующий кадр.
Попробовала
//
setInterval (hideMessage, 1000, flag);

работет, но только на первом кадре и последнем, а внутренние кадры просто пролистываются с паузой которую мы задаем в данном операторе.
Такое ощущение, что дело в функции
//
function hideMessage (flag:Boolean) {
msg.removeMovieClip ();
if (flag) {
nextFrame ();
}
}

iNils
28.03.2007, 12:02
setTimeout - это не документированная функция, которая появилась только в 8-ке (в AS3 она уже документирована). То есть в mx 2004 она не работает. Мы пошли в верном направлении использовав setInterval, но в отличии от setTimeout она вызывается постоянно пока ее не очустить. Выглядит это примерно так:
var id:Number = setInterval (....);
Внутри метода который она вызвает пишем:
clearInterval (id);

AmaltheaJ5
28.03.2007, 12:21
Я так уже пробовала, ничего не меняется :-). Может не в том месте очищала интервал. Еще поэксперементирую.

AmaltheaJ5
02.04.2007, 10:47
Доброе время суток!
Вот что у меня получилось с фруктами:
16924
С задержкой проблемы так и остались, надпись "Правильно" не исчезает через заданный интервал времени.
Операторы:

setInterval(...)
clearInterval(...)

в моем случае не срабатывают :-(

CorC
02.04.2007, 11:08
function showMessage(str, flag)
{
msg.text = str;
if (flag){
Moving=setInterval(function(){
clearInterval(Moving);
msg.text="";
nextFrame();
},2000);
} // end if
}

AmaltheaJ5
02.04.2007, 12:22
Все получилось, спасибо!!!