Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Условный оператор "if" - нужна помощь (http://www.flasher.ru/forum/showthread.php?t=138906)

AzagThoth 20.04.2010 11:53

Цитата:

Сообщение от in4core (Сообщение 901599)
Код AS1/AS2:

f_ploshad2_txt.text = 300

между прочим это тоже неверно и нетолько из за присвоения
Код AS1/AS2:

f_ploshad2_txt.text == "300"

а вот так верно во всех случаях

Ну я бы не сказал так. Если сравниваются значения разных типов, то они вначале будут приведены к одному типу, после чего уже и будет осуществляться само сравнение. Ну это например как если делать 5==false или if(5). В общем не обязательно писать "300" можно просто 300 и всё будет хорошо. С другой стороны действительно наверное лучше конкретно задавать тип значения(вопрос быстродействия). А вот сейчас и проверим!
Код AS1/AS2:

//per - динамическое поле на сцене с заданным текстом 300
var a:Number=0;
 
time=getTimer()
while(a<200000){
        if(per.text==300){
                a++;
        }
}
trace(getTimer()-time);
 
a=0;
time=getTimer()
while(a<200000){
        if(per.text=="300"){
                a++;
        }
}
trace(getTimer()-time);

И что же мы видим в Отупут?:
1597
1219

Разница безусловно есть в 1.3 раза медленее работает если сравниваем значения разных типов в случае строка=число.

Добавлено через 5 минут
Maxim Вы можете выложить файл по человечески? С депозита у меня скорость 6-8 кбайт/сек. Что значит по-человечески!? Т.е. приатачить его к вашему сообщению сюда на форум, предварительно заархивировав.

tsarapkabel 20.04.2010 16:59

Используя trace можно увидеть, что в 4-5-6 кадрах задаётся переменная 300-420-600, а при переходе на 7-й кадр она становится undefined.
Это происходит потому, что то же самое текстовое поле в 7 кадре отсутствует.
Попробуйте не писать 300-420-600 в текстовом поле, а напишите для него отдельную переменную. Только опять же не локальную, а глобальную.

in4core 20.04.2010 17:24

Да все я верно говорю число должно быть числом, а строка строкой. И нечего тут придумыавть велосипед. АФФТАР - Чем правильнее будешь писать свои скрипты, тем меньше будет вопросов в будущем

AzagThoth 20.04.2010 19:00

В действиях должен быть смысл. Число должно быть числом, а строка строкой - звучит не обосновано ни разу. "Велосипед" не я придумал, а разработчики. Да во множестве языков авто-преобразование значений есть. Но в любом случае побеждает здравый смысл. Если мы можем проверить разные пути и увидеть одинаковы они или различны и какой оптимальней, тот тут и следует делать уже какие-то выводы. Ну собственно для меня вывод уже сделан. По возможности сравнивать значения одних типов, как и советует in4core, однако если для кого то 1.3 не показатель, то почему бы ему и не сравнивать разные типы данных!? В общем все правы == никто не прав :)

Psycho Tiger 20.04.2010 19:20

Цитата:

Сообщение от in4core (Сообщение 901599)
Код AS1/AS2:

f_ploshad2_txt.text = 300

между прочим это тоже неверно и нетолько из за присвоения
Код AS1/AS2:

f_ploshad2_txt.text == "300"

а вот так верно во всех случаях

Что, простите?


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

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