PDA

Просмотр полной версии : логические операторы


Vrefr
14.02.2003, 03:47
Ребят!! Срочнеый вопросец! Нихрена не понимаю, вроде делаю как в хелпе написано! А не пашет!

on (press) {
if (n != 0 and yoname != "" and lname != "") {

переходит дальше если заполнены поля с переменными yoname и lname, а также если n не равно 0

} else {
this.wrong.gotoAndPlay(1);
}
}


надо чтобы переходило дальше, ТОЛЬКО если все условия выполнены! Т.е. n не равно 0, а поля заполнены! Если хоть одно не выполнено, то оно должно выводить this.wrong.gotoAndPlay(1);

ЧТО НЕ ТАК??
СПАСИБО :)

Vrefr
14.02.2003, 04:05
Ну.. что же вы? Ну плиз! Же ж! :))

JeeP
14.02.2003, 04:08
у меня работает, смотри правильна ли адресация к переменным!

Vrefr
14.02.2003, 04:19
Да, нет, правильная... и оно работает, например если n равно 0 то не пускает, но вот если я уже сделал n =1 а поле с переменной lname оставил пустым. то все равно идет дальше! Т.е. проверяет только первую переменную...

Vrefr
14.02.2003, 04:23
стоп, если я их меняю местами (yoname != "" and lname != "" and n != 0), то оно все равно пропускает вперед при именении n... значит оно вообще не проверяет заполнение переменных name

Vrefr
14.02.2003, 04:25
может я неправильно показываю, что переменные пустые?
yoname=""?

JeeP
14.02.2003, 04:30
Оригинал написал(а) Vrefr
Да, нет, правильная... и оно работает, например если n равно 0 то не пускает, но вот если я уже сделал n =1 а поле с переменной lname оставил пустым. то все равно идет дальше! Т.е. проверяет только первую переменную...

так и должно идти дальше, ты ж поставил условие n!=0, а n=1 это и есть неравенство 0!
может это ты глючишь ?? :D

Vrefr
14.02.2003, 04:31
if (yoname != "|" and lname != "|" and n != 0)
вот, я делаю вот так и все работает! Естесственно. предварительно вставив в поля "|", но как показать что они не должны быть пустыми?

Vrefr
14.02.2003, 04:33
Да понятно что неравенство! Так оно и должно переходить! Но я не про Н а про переменные полей! Короче предыдущее уточнение плиз...

JeeP
14.02.2003, 04:34
да ты все правильно написал сначала!
или у тебя с логикой что-то неправильно, или с руками
в любом случае используй trace();
и посмотрикакие значения принимаю твои поля и переменная

JeeP
14.02.2003, 04:43
видимо они у тебя просто undefined
поставь вместо
yoname != ""

это
(yoname != "" and yoname != undefined)

Vrefr
14.02.2003, 04:48
ну так бы сразу и сказал :))))) а то руки, руки :)
undefined
работает на ура :)

еще вопрос !!
Есть массив из трех слов! Есть поле текстовое... и надо что бы каждый раз при выполнении экшена туда рендомом записывалось одно из трех значений!
я делаю вот так, но это явная лажа...

n = ["один", "два", "три"];
for (var item in n) {
numb = n[item];
}
return (numb);

love = random(numb);

JeeP
14.02.2003, 04:53
да согласен, явная лажа!
скажу больше - полнейшая лажа! :D

Vrefr
14.02.2003, 04:58
а как же быть ?:((

JeeP
14.02.2003, 04:59
:confused:
может через ООП его ???

Vrefr
14.02.2003, 05:05
OOП?
Опять Она Падлюка? :)
тобишь лажа :)) типа не трахать себе мозги и сделать три разных клипа?
жаль..... но спасибо за помошь :)

JeeP
14.02.2003, 05:09
мой сонный мозг подсказывает мне две строчки, может они тебе помогут ;)
n = ["один", "два", "три"];
trace(n[Math.round(Math.random()*2)]);

а про ООП забудь, тайна это, чет я проговорилсИ!!!
:p

Vrefr
14.02.2003, 05:38
твой спящий мозг - супер!! :)) все работает!!!!! Огромное спасибо!

iLoveYou
14.02.2003, 16:37
trace(n[Math.round(Math.random()*2)]);
trace(n[random(3)]) - ?

Nox Noctis
14.02.2003, 17:12
а насчет первого вопроса все еще проще.

тебе что нужно проверить ?
тебе нужно проверить что в поле введен хоть один символ.

и тебя при этом абсолютно не колышет определена переменная или равна ""

если проверять андефайнед - то будет сбой если сначала в поле написать что-нить а потом стереть - потому что это уже будет не андефайнед вовсе, а ""

оптимальный вариант:

if (n != 0 && yoname.length && lname.length ) { ... }

и все дела. сработает только если в поле есть символы.

Vrefr
16.02.2003, 05:12
2Nox Noctis: да, это то что надо!! Попробую, спасибо!
2 Sergey"iLoveYou": у меня было 7 элементов массива, я поставил

trace(n[Math.round(Math.random()*7)]); и все работает замечтательнО :)

JeeP
17.02.2003, 02:28
Серега прав, эта строчка работает прекрасно trace(n[random(3)]), да и запись компактнее,
просто сама Макромедия рекомендует пользоваться такой
trace(n[Math.round(Math.random()*2)]);

а что из них выбрать решать тебе Vrefr!