Форум 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)
-   -   Возможности switch (http://www.flasher.ru/forum/showthread.php?t=132960)

in4core 24.11.2009 13:48

Возможности switch
 
Интерисует след проблема :
Код AS1/AS2:

switch(_tx.text) {
case "FFF":
someFunc();
break;
/// далее идет вопрос
case "FFF"+n: // где n рандомное число вводимое пользователем. например FFF33
someFunc(n);

Естввенно работать так не будет ибо передает строку. можно ли это сделать как нибудь именно через свитч как в моем примере ?

iflamberg 24.11.2009 14:18

думаю, нет

in4core 24.11.2009 14:19

разве нельзя текст в поле переконвертировать в число ? и выдать typeof Number ? думал можно. как число в строку к примеру так и наоборот

iflamberg 24.11.2009 14:29

аа, слушай, я вообще вопроса не понял.
мм... и сейчас не понимаю. Не работает конструкция case "FFF"+n: ?
Дык она работает:
Код:

var some:String = "12";

var t:String = "123";

switch (t){
        case some+"3": trace("ok"); break;
}


mooncar 24.11.2009 14:33

Видимо, автор хочет при выполнении условия "откусить" с конца хвостик n и передать его аргументом типа Number в вызываемую функцию someFunc(n)?

iflamberg 24.11.2009 14:40

ну можно откусить с помощью String.substring.

mooncar 24.11.2009 15:02

Код AS1/AS2:

var str:String = _tx.text.substr(-1, 1); //получаем отрезанный с конца один символ
var n:Number = Number(str); //приводим к Number
 
someFunc(n);
 
function someFunc (num) {
        if (isNaN(num)) {
                trace('введено только три символа или на конце не цифра');
        }
        else {
                switch (num) {
                        case 1:
                                trace('на конце 1');
                        break ;
                        case 2:
                                trace('на конце 2');
                        break ;               
                }               
        }
}


in4core 24.11.2009 15:35

фак. конечно все это хорошо - но цифры могут быть от 0 до 100 это раз.
код приблиз выглядет так :
Код AS1/AS2:

function SHOW() {
if(_global.h and Key.isDown(Key.ENTER)) {
switch(_tx.text) {
case "FFF"+n:
func(n);
break;
}
}
}

Конструкция должна быть именно такой, а ты вынес функцию и в ней сделал кейсы.

Добавлено через 6 минут
Объясняю смысл работы : Пользователь вводит определенный кодец в текстовое поле = например setSound. Компилятор спрашивает сколько надо вам установить громкость? пользователь вводит число. Функция выполняется соотв этому числу.

Тоесть
Код AS1/AS2:

switch(_tx.text) {
case "setSound":
someField._text = " Установите громкость";
bul = true;
break;
case SOME_FUCK_NUMBER:
if(bul) {
bul = false;
func(_tx.text)
}
break;
}
function func(n) {
snd.setVolume(n);
};

Ну вот пример чего хочу реализовать. думаю теперь понятно. Нужно именно в такой конструкции свича как у меня

mooncar 24.11.2009 15:42

Главное в моем примере - вот это, о чем ты спрашивал:
Код AS1/AS2:

var str:String = _tx.text.substr(-1, 1); //получаем отрезанный с конца один символ
var n:Number = Number(str); //приводим к Number

А где лучше поставить свич - до вызова функции или прямо в ней (я думаю, что лучше прямо в ней) и как понять, сколько откусывать с конца - это уже некий алгоритм, который тебе придумать...

Добавлено через 1 минуту
Оффтоп:
Не путай - компилятор - эта штука, которая работает только при создании SWF.
А при работе swf-ки работает плеер.
И в коде делай отступы внутри логических блоков - желание разбирать твой код исчезает.

in4core 24.11.2009 15:44

А если посекретничать заодно ) я делаю проект свой, и в нем хочу реализовать кроме как ручную работу проекта - тоесть нажатие мышкой на кнопки и прочее. Еще и кодовую часть. типа консоль. В которой можно устанавливать че хошь, удалить любой клюп например, сделать глобальную громкость и прочее. И еще много фукнций недоступных для ручного)))).

Добавлено через 48 секунд
Ну я думаю ты понял теперь - что я имел ввиду под СЛОВОМ компилятор в данный момент.


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

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