Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.01.2004, 07:21
FlasFan вне форума Посмотреть профиль Отправить личное сообщение для FlasFan Найти все сообщения от FlasFan
  № 1  
FlasFan

Регистрация: 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, а не о том, как мне написать программу. Спасибо!

Старый 25.01.2004, 20:45
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 2  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Хехе ... ну и основы программирования у вас

Не работает ваш странный свитч (в первы раз вижу такой синтаксис) - иф/элс иф/элс не значительно дольше написать. И понятнее кстати

if ((k > 1)&&(k < 10)) func1;
else if ((k > 10)&&(k < 20)) func2();
else func3();


Ах да, вы только спрашиваете про свитч... Ну дык ВЕЗДЕ можно обойтись без него!


Последний раз редактировалось kompadre; 25.01.2004 в 20:48.
Старый 25.01.2004, 21:32
FlasFan вне форума Посмотреть профиль Отправить личное сообщение для FlasFan Найти все сообщения от FlasFan
  № 3  
FlasFan

Регистрация: Jan 2004
Сообщений: 6
Уважаемый "k... как вас там?"

значит ты тоже не знаешь как работает свитч....

Старый 26.01.2004, 00:05
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 4  
sergwizard
 
Аватар для sergwizard

Регистрация: 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)
Из примера видно, что если есть интервал значений, то удобнее и легче обходиться без switch.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 26.01.2004, 00:26
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 5  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Уважаемый как вас там,

практически в любом языке программирования Ваш
Код:
case 1-9 :
будет восприниматся как
Код:
case -8 :
Включая флэш action script.
Попробуй-ка
Код:
num = -9;
switch (num) {
	case 1-10 : 
		trace(" Num равняется -9!!!");
		break;
	case 20-30 : t
		trace(" Num равняется -10!!!");
		break;
	default : 
		trace("Default");
}


Последний раз редактировалось kompadre; 26.01.2004 в 00:28.
Старый 26.01.2004, 11:05
FlasFan вне форума Посмотреть профиль Отправить личное сообщение для FlasFan Найти все сообщения от FlasFan
  № 6  
FlasFan

Регистрация: 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 <значение>
Не "интервал", не "значения", а одно единственное "значение".

Старый 26.01.2004, 12:41
kostyanK вне форума Посмотреть профиль Отправить личное сообщение для kostyanK Посетить домашнюю страницу kostyanK Найти все сообщения от kostyanK
  № 7  
kostyanK

Регистрация: 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();
}

Старый 26.01.2004, 18:40
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 8  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Я очень рад что вы пришли к противоричивой мысле о том что даже Вы не знаете как работает свитч.

Позвольте мне еще немного сократить Ваш с 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.
Старый 26.01.2004, 19:09
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 9  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Оригинал написал(а) FlasFan
ТЕМ НЕ МЕНЕЕ (мой грустный вывод)
Писать надо case <значение>
Не "интервал", не "значения", а одно единственное "значение".
вывод потрясающий основы мироздания, ага.

2FlasFan
можно узнать название хотя бы одного языка программирования, где ваша конструкция вида "case 1-9 : func1(); break;" даст корректный результат. было бы любопытно узнать об этой основе программирования побольше.

а во флэше свитч предназначен только для того чтобы не писать много-много ифов слитно. и больше ни для чего.


Последний раз редактировалось Nox Noctis; 26.01.2004 в 19:14.
Старый 26.01.2004, 19:24
kostyanK вне форума Посмотреть профиль Отправить личное сообщение для kostyanK Посетить домашнюю страницу kostyanK Найти все сообщения от kostyanK
  № 10  
kostyanK

Регистрация: 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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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