|
|
|||||
Регистрация: Jan 2004
Сообщений: 6
|
Как работает switch?
Есть во флэше такая штука как switch:
switch (number) { case exp1: case exp2: default: } Как вместо expN поставить не одно значение, а несколько а) перечислением, н-р 1,2,3 б) все значения из определенного интервала , н-р 4-8 (т.е. 4, 5, 6, 7, 8) В справке FlashMx этого нет, в имеющейся литературе тоже. А ведь это одна из основ программирования. Вот что у меня было: switch (k) { case 1-9 : func1(); break; case 10-99: func2(); break; default : func3(); } } На деле же работает только для чисел не превышающих 10, все остальное принимает за default. Если default заменить на case 100-999 то невыполняется ничего! пустота да и только! Вопрос: Как заставить его видеть интервал??? ps Я знаю что в данном примере можно легко обойтись и без switch'а. Вопрос этот касается только самого действия switch, а не о том, как мне написать программу. Спасибо! |
|
|||||
Хехе ... ну и основы программирования у вас
Не работает ваш странный свитч (в первы раз вижу такой синтаксис) - иф/элс иф/элс не значительно дольше написать. И понятнее кстати if ((k > 1)&&(k < 10)) func1; else if ((k > 10)&&(k < 20)) func2(); else func3(); Ах да, вы только спрашиваете про свитч... Ну дык ВЕЗДЕ можно обойтись без него! Последний раз редактировалось kompadre; 25.01.2004 в 20:48. |
|
|||||
Регистрация: Jan 2004
Сообщений: 6
|
Уважаемый "k... как вас там?"
значит ты тоже не знаешь как работает свитч.... |
|
|||||
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
В таких случаях, когда нам нужен интервал значений, то лучше присвоить каждому интервалу свою переменную, и потом, в switch обращаться именно к этой переменной.
Пример: Сделай динамическое поле с var "txt", и положи во фрейм следующий код. function rand(){ numb = random(100); if(numb<=10){num=0}; if(numb>10&&numb<=20){num=1}; if(numb>20&&numb<=30){num=2}; if(numb>30&&numb<=40){num=3}; if(numb>40&&numb<=50){num=4}; if(numb>50&&numb<=60){num=5}; if(numb>60&&numb<=70){num=6}; if(numb>70&&numb<=80){num=7}; if(numb>80&&numb<=90){num=8}; if(numb>90&&numb<=100){num=9}; switch (num) { case 0: txt = "Десять"; break; case 1: txt = "Двадцать"; break; case 2: txt = "Тридцать"; break; case 3: txt = "Сорок"; break; case 4: txt = "Пятьдесят"; break; case 5: txt= "Шестьдесят"; break; case 6: txt = "Семьдесят"; break; case 7: txt = "Восемьдесят"; break; case 8: txt = "Девяносто"; break; default: txt = "Это уже слишком!" } } setInterval(rand,2000)
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
Уважаемый как вас там,
практически в любом языке программирования Ваш будет восприниматся как Включая флэш action script. Попробуй-ка Последний раз редактировалось kompadre; 26.01.2004 в 00:28. |
|
|||||
Регистрация: Jan 2004
Сообщений: 6
|
Уважаемый sergwizard
спасибо за полезный совет. Я не замедлил применить его на практике, немного изменив и сократив код. function rand(){ numb = random(100); if(numb<=30){num=0}; if(numb>30&&numb<=60){num=1}; if(numb>60&&numb<=90){num=2}; switch (num) { case 0: txt = "Компахарь"; break; case 1: txt = "Компудель"; break; case 2: txt = "Компудра"; break; default: txt="Это уже грубо" } } setInterval(rand,2000) Ваш пример я тоже применил на практике и наглядно убедился что 1-10 будет -9, а 20-30 будет -10. У меня нет слов чтоб описать мой восторг! ТЕМ НЕ МЕНЕЕ (мой грустный вывод) Писать надо case <значение> Не "интервал", не "значения", а одно единственное "значение". |
|
|||||
Регистрация: Dec 2003
Сообщений: 36
|
Еще как вариант - не использовать break;
т.е. switch (k) { case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 : case 8 : func1(); break; ... и т.д. default : func3(); } |
|
|||||
Я очень рад что вы пришли к противоричивой мысле о том что даже Вы не знаете как работает свитч.
Позвольте мне еще немного сократить Ваш с sergiwizard код что бы доказать преимущество учиться программировать перед предумыванием своего *личного* синтаксиса к языкам программирования function rand() { var numb = random(100); var out = ""; if(numb<=30) out = "FlasCan разбушивался"; else if(numb>30&&numb<=60) "FlasBan разбушивался"; else out = "Уважаемый нафаня, как вас там, зарубите себе на носу : фантазия в программировании приводит только к грустным выводам."; return (out); } setInterval(rand,2000); Последний раз редактировалось kompadre; 26.01.2004 в 18:44. |
|
|||||
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
2FlasFan можно узнать название хотя бы одного языка программирования, где ваша конструкция вида "case 1-9 : func1(); break;" даст корректный результат. было бы любопытно узнать об этой основе программирования побольше. а во флэше свитч предназначен только для того чтобы не писать много-много ифов слитно. и больше ни для чего. Последний раз редактировалось Nox Noctis; 26.01.2004 в 19:14. |
|
|||||
Регистрация: Dec 2003
Сообщений: 36
|
фантазия в программировании приводит только к победе ))
function rand() { var numb = random(100); var out = ""; switch (Math.floor(numb/30)) { case 0 : out = "FlasCan разбушивался";break; case 1 : out = "FlasBan разбушивался";break; default : out = "Уважаемый нафаня, как вас там, зарубите себе на носу : фантазия в программировании приводит только к грустным выводам."; } return (out); } setInterval(rand, 2000); |
Часовой пояс GMT +4, время: 22:52. |
|
« Предыдущая тема | Следующая тема » |
|
|