Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Возможно в actionScript такое?
Flash Zone Forum > Macromedia Flash > ActionScript
dakila
Здравствуйте!

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

Заранее благодарен!
MustLive
Цитата
Возможно в actionScript такое?

dakila

Да, такое возможно. Тебе нужно будет использовать тестовые поля. Одно сделай для Input текста, куда будет вводиться код. Значение будешь считывать по обработчику - если у тебя будет кнопка "OK" (или с другим текстом), то поставишь обработчик нажатия на кнопку, а если без кнопки - то обработчик изменения в текстовом поле (в этом случае при вводе каждого символа будет происходить проверка кода).

Далее в обработчике проведёшь проверку кода используя условный оператор if. И выведешь в другое текстовое поле нужную информацию в зависимости от введённого кода.
dakila
Спасибо, разобрался!

Возник другой вопрос, как сделать чтобы вводимый текст сам делился на группы по четыре цифры. такого вида - хххх хххх хххх, но чтобы это было одно число, и затем его можно было сравнить с шаблоном?
chingachgoog
Ну да, а почему нельзя-то?
Как сказал MustLive можно использовать обработчик текстового поля onChanged
MustLive
dakila

Молодец, что разобрался с первой задачей.

Цитата
Возник другой вопрос, как сделать чтобы вводимый текст сам делился на группы по четыре цифры. такого вида - хххх хххх хххх, но чтобы это было одно число, и затем его можно было сравнить с шаблоном?

Эта задача сложнее чем первая, но тоже решаемая.

В самом флеше такой возможности нет. В отличии от различного ПО, где можно задать форматирование числа. Хотя это касается старых версий флеша. Я читал о нововведениях в Flash 10 и 11, где упоминалось о новом текстовом движке, возможно там могла появится поддержка форматирования (но с новыми редакторами Флеш я не работал, потому об этом мне ничего не известно).

Но ты можешь сделать это сам в AS. Поставишь в обработчик изменения в текстовом поле (onChanged) код который будет разбивать текст на группы, при этом при сравнении будешь преобразовать строку в число. Чтобы сравнивать с числом, хотя в качестве шаблона для сравнения ты можешь использовать и строку с "добавленными пробелами".
dakila
Появилась другая идея:
есть 4 окна, в 3 окнах по 3 пункта. В 4-ом окне результат.

1 окно 
1...
2...
3...

2 окно 
A...
B...
C...

3 окно 
I...
II...
III...

например захожу в 1 окно выбираю "1", захожу во 2 окно выбираю "В", захожу в 3 окно выбираю "III"

в 4-ом окне высвечивается "1 B III" и текст предназначенный для этого набора.

Я б с очень скудным знанием AS попробовал бы сделать так:

Код
if (если выбрано 1 в 1-ом окне)
                if (если выбрано А в 2-ом окне)
                             if (если выбрано I в 3-ом окне)
                               переходим на кадр 1 (в котором высвечивается инфа по коду "1 A I")

                             else if (если выбрано II в 3-ом окне)
                               переходим на кадр 2 (в котором высвечивается инфа по коду "1 A II")

                             else
                               переходим на кадр 3 (в котором высвечивается инфа по коду "1 A III")

                else if (если выбрано В в 2-ом окне)

                             if (если выбрано I в 3-ом окне)
                               переходим на кадр 4

                             else if (если выбрано II в 3-ом окне)
                               переходим на кадр 5

                             else
                               переходим на кадр 6

И так далее



После та го как поржете над моим кодом, прошу помочь мне написать более реальный и оптимальный код
Думаю что это связано как-то с переменными и с оператором switch

Заранее благодарен!
MustLive
dakila

Так и есть, это связано с переменными. Можешь создать переменные (типа Number) - столько переменных, сколько "окон", т.е. три в твоём случае. В них будешь хранить выбранное состояние. Переменные назови select1, select2 и select3, принимать они будут целочисленные значения (в частности от 1 до 3 - буквы и римские цифры ты можешь на экране вывести, но в коде программы обработка будет идти с цифрами).

Поставишь обработчики нажатий (выбора) в каждом из окон. В этих обработчиках будешь заносить выбранное значение (от 1 до 3) в каждую из этих переменных. После чего сделаешь простой алгоритм проверки выбранного значения (с использованием оператора if).

Цитата
прошу помочь мне написать более реальный и оптимальный код

Идею ты описал правильно, теперь это нужно реализовать в AS коде. Выбор условного оператора - на своё усмотрение.

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

Код
if (select1 == 1 and select2 == 1 and select3 == 1) {
    gotoAndStop(2);
}
else if (select1 == 2 and select2 == 1 and select3 == 1) {
    gotoAndStop(3);
}
// ...
else if (select1 == 3 and select2 == 3 and select3 == 3) {
    gotoAndStop(10);
}

Если ты будешь все объекты держать на таймлайне (на верхнем уровне, без использования отдельного мувика с информацией), то можешь в первом кадре разместить этот код. И начиная со второго кадра размещать блоки с информацией на которые и сделаешь переход в блоках условного оператора (как я показал выше).
Taltek
Цитата(dakila @ 17.01.2012 - 01:47) *
Здравствуйте!

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

Заранее благодарен!

как то расплычив вопрос и не совсем понятен.
ну давай попробуем на примере с паролем.
создаем 4 текста "input text", называем их а1,а2,а3 и а4. добавим возможность ввода определенное количество символов "Maximum Characters" ,будет 4.
создаем файл data.txt, и пишем в нем например:
Код
pass=5555444433332222&

в флеш на первой странице вставляем код:
Код
stop();
dir = new LoadVars();
dir.load("data.txt");
dir.onLoad = loadTextVariables;
function loadTextVariables() {
}


создаем кнопку с кодом;
Код
on (press) {
    checkl = dir.pass;
    passxx = a1.text+a2.text+a3.text+a4.text;
        if (passxx == checkl) {
        gotoAndStop(2);
    } else {
        show_txt.text = "ERROR";
    }
}


А дальше с полученными данными можно крутить как хочешь. так же можно защитить или обработать данные тхт, например "/*" ну и усложнить код  ph34r.gif
исходник
MustLive
Taltek

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

Единственное, на что я обращу внимание, это на некоторые места требующие улучшения:

1. Вариант с паролем в чистом виде в файле (data.txt) легко обходится. Т.к. легко можно из swf-файла выяснить путь к данному файлу и узнать пароль. Поэтому нужен другой подход для работы с паролем.

2. Обработчик onLoad у тебя не используется, поэтому можно было не объявлять функцию и сам обработчик.

3. Стоило весь код разместить в кадре (включая обработчик нажатия, а не размещать его "на кнопку" с оператором on).
Русская версия IP.Board © 2001-2013 IPS, Inc.