CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Специалисты компании iiyama предлагают своим клиентам новый крупноформатный монитор. Речь идет о ...
Производители материнских плат уже давно озаботились тем, чтобы предложить своим клиентам идеальную ...
Специалисты компании Epox предлагают своим клиентам новенькую материнскую плату компактных размеров ...
Итак, состоялся анонс восьмого поколения смартфонов Apple iPhone вместе с юбилейным iPhone X. И ...
Сколько, по вашему мнению, должно быть камер в смартфоне? Huawei, похоже, считает, что можно установить ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Flash на страже

Barmaley vestas@ua.fm

Представьте ситуацию: вы во Flash’e создали необычайно красивый мувик (или сверхполезную прогу) и с помощью специальной программы — например, SWF Studio (http://www.northcode.com) — конвертировали его в скринсейвер или исполняемый файл (далее — просто «мувик»). Ваше творение поселилось на компьютерах всех ваших знакомых, и вы, опьяненные успехом, решили его продавать. А для этого мувик нужно оснастить функцией проверки и записи серийного номера, используя для этого какую-то специальную программу или сам же Flash. Первый вариант отпадает (своих глюков хватает, к тому же еще и деньги надо платить), а второй… Наверняка заинтересует.

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

Делать защиту мы будем во Flash 5, так как во Flash 4 и Flash MX это не очень-то будет работать (в четвертом совсем не будет). То есть, если из-под Flash MX опубликовать .swf-файл как Flash Player 5, то все работать будет, а вот в exe-проекторе не будет.

Записывать значение переменной в файл мы будем с помощью Flash’овой fscommand’ы exec и «интерпретатора команд Windows» command.com. Считывать будем командой loadVariables().

Итак, в первом фрейме пишем:

loadVariables (url ,location [, variables]), где url — путь к файлу, location — путь (target) или уровень (level), в который записываются полученные значения. При использовании пути (например: "_root.serial", с кавычками) пишется путь к муви-клипу. При использовании уровня (например, 0 — без кавычек), loadVariables заменяется на loadVariablesNum), указывается глубина его размещения. Нулевой уровень идентичен пути _root

[variables] — необязательный аргумент, указывающий HTTP-метод передачи переменных —GET или POST.

\\ — escape-последовательность, во Flash’e так представляется обратный слеш \. Для хранения переменных вы можете использовать любое допустимое имя файла с любым расширением в любой папке. В нашем случае чем секретнее будет имя и путь к файлу, тем лучше. Так как мы не знаем, на каком разделе у пользователя установлена Виндовс, а %WINDIR% Flash не понимает, мы пишем несколько путей, самые вероятные — с C:\ по F:\.

Далее пишем в пятом фрейме:

Скрипт для 10 фрейма (он выполнится только при первом запуске мувика):

Записать значение переменной в файл можно так:

fscommand("exec", "путь_к_файлу") запускает внешнюю программу, в примере это command.com, с параметром /с, который значит, что после выполнения команд окно command.com закроется.

\t — escape-последовательность — знак табуляции, в данном случае используется вместо пробелов.

echo — вывод сообщений на экран или в файл (если файла не существует, он автоматически создается). Для справки запустите command.com (Пуск > Выполнить > command.com), введите echo/?, или command.com/? и нажмите Enter.

variable=1>>c:\\file.txt — запись строки &variable=1& в файл c:\\file.txt. >> означает перезапись содержимого файла — чтобы дописать строку в конец файла, используется >.

Заключать переменную и ее значение между двумя & необходимо, чтобы Flash при считывании с файла проигнорировал все знаки, стоящие за ними.

Как видите, все довольно просто. Но только не у нас :-). Нам ведь надо записать в файл значение переменной randomSerial, а не просто строку, поэтому будем мудрить (дописываем в 10 фрейме):

Так как в этот раз мы складывали строки, то можно использовать +, вместо add.

Теперь разберем скрипт 5 фрейма.

Number (expression); — функция, конвертирующая аргумент expression в число и возвращающая значение:

1) если expression — число, то его значение;

2) если Boolean, то 1, при expression = true; и 0 при false;

3) если строка, то пытается анализировать expression как десятичное число;

4) если не определено, то 0.

Так как Flash при чтении переменных из файла считает их строками, для того чтобы мы могли работать с ними как с числовыми значениями мы используем Number().

При первом запуске нашей программы переменной serial еще не существует (мы ее инициализируем и запишем только в 10 фрейме), поэтому Flash считает, что она равна нулю, и условие перехода в 10 фрейм выполнится только при первом запуске.

В 17 фрейме давайте создадим два поля: одно —Dynamic (вверху по центру), а второе —Input, пониже. В полях Variable напишите соответственно randomSerialPole и inputSerialPole. А в Frame Actions укажите randomSerialPole=serial;.

Теперь в верхнем поле будет отображаться значение переменной serial, взятое из 10 фрейма при первом запуске, или же из файла — при последующих запусках.

Далее создайте кнопку возле поля Input и напишите для нее следующий скрипт:

Например, сгенерированный номер — 87654321. Поделив его на два, получаем 43827160.5. Для того чтобы получить целое число, используется метод Math.floor(число), который возвращает самое близкое целое число, меньшее или равное. В нашем случае это 43827160.

Деление на два взято для примера — чем сложнее будет формула, тем лучше.

Теперь в 14 фрейме напишите:

При каждом запуске мувика будет проверяться значение переменной check (оно записывается в файл в 17 фрейме), и если оно равно единице, то регистрация будет пропускаться.

Создайте еще один слой, и в 14 фрейм этого слоя поместите муви-клип (в поле Name, закладка Instance, напишите demo), в котором находится, например надпись «Пожалуйста, зарегистрируйтесь».

Скрипт для муви-клипа:

Этот клип будет виден только в том случае, если в 17 фрейме будет введен неправильный серийный номер.

Вот и все. Теперь все слои со всеми фреймами вашего мувика засуньте в один муви-клип и поместите его в 18 фрейм этого мувика.

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

Стоить заметить, что рассмотренный в статье способ обладает не самым удобным вариантом проверки и записи номера — просто так легче объяснить принцип его работы. Лучше содержимое 1, 5, 10 и 17 фреймов переместить в отдельный мувик (естественно, немного изменив скрипт), а в мувик с вашим проектом поместить содержимое 1 и 14 фреймов, изменив 14 фрейм так, чтобы при неравенстве единицы мувиклип demo был виден. И вместе с главным мувиком поставляйте еще и этот «регистрационный модуль».

Экспериментируйте и создавайте! Запись/считывание в файл можно использовать во многих направлениях — это и игры, и программы, и Flash-сайты.…В Flash’e еще много кажущихся скрытыми возможностей, главное — их раскрыть и использовать на полную мощь.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov