Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   логические операторы (http://www.flasher.ru/forum/showthread.php?t=42948)

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!


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

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