Сидів я тай думку гадав: почему большинство авторанов такие стандартные и скучные? Ведь по одежке встречают... И решил я сделать красивый, в меру упитанный (по размеру), но в то же время функциональный авторан. Но как, если все мои познания в программировании ограничиваются циклом статей Тихона Тарнавского? Ждать его (цикла) окончания было неохота, поэтому я обратил свой взор на… FLASH! Да, именно этот гигант от Macromedi’и почти идеально подходит для выполнении моей задачи.
Поскольку это моя первая «программа» с ActionScript’ами, то заранее попрошу прощения за мои кривые объяснения и такие же скрипты. При написании статьи я исходил из смелого предположения, что вы читали статьи Кирилла и Андрея Коваленко (см. МК №№45, 49, 5, 7 (216, 220, 228, 230)), а также немного знакомы с самим Flash’ем. Если не знакомы, советую пройти туториал 4-го Flash’а, так как там все (кроме ActionScripts) очень просто и понятно объясняется.
Я рисовал авторан во Flash MX, но в пятом Flash’е это тоже вполне реально.
Итак, запускаем Flash. В Properties устанавливаем Frame Rate где-то 2030 fps, размеры (Size) на ваше усмотрение, в Publish Settings выбираем Windows Projector. Переименуем Layer1 в Background, рисуем фон, затем блокируем слой (Lock layer, значок замка). Выше слоя Background создаем новый слой Main, в котором будут находиться кнопки управления и запуска программ. Для первого кадра слоя Main в окне Actions пишем stop(); тем самым останавливая воспроизведение flash-ролика.
Теперь создадим кнопку prog1, которая будет запускать описание программы prog1 и активировать кнопку инсталляции этой программы.
Отредактируйте кнопку и напишите следующий скрипт:
Совет: каждый раз, написав скрипт, для большего его понимания переходите в режим Для чайников (Normal mode) и, нажимая на строки с кодом, просматривайте возможные параметры.
В первой строке указывается тип события (мышь над кнопкой, кнопка отжата), если оно происходит, то в переменную path (вторая строка) записывается значение prog1.exe, где prog1.exe имя файла, который будет запускаться с инсталлятора. Значения этой переменной могут быть и такие:
В третьей строке мы объявляем и записываем в переменную visible значение "1", в будущем она пригодится нам для отображения информации о prog1.
В четвертой строке происходит переход на второй кадр, и воспроизведение останавливается.
Таким образом, создаем необходимое количество кнопок, по одной на каждую программу, меняя при этом значение переменной path на путь к нужной программе, и значение переменной visible на следующее натуральное число (1;2;3;…;n)
Теперь нарисуем кнопку обзора диска. Создаем новую кнопку, редактируем ее и пишем скрипт:
getURL(“имя_файла” , “_target”) с помощью этой функции можно загрузить любой файл, “_target” способ открытия окна. Вообще-то эта функция предназначена для открытия html-документов, и поэтому при ее использовании вначале будет показано окно загрузки файла, как при открытии .exe- или .zip-файла в Internet Explorer.
В нашей функции имя файла не указано, поэтому откроется папка, в которой находится flash-ролик.
Следующая кнопка, которую нужно нарисовать выход из авторана. Пишем для нее следующий скрипт:
fscommand() позволяет «общаться» Flash-player’у с другими программами и управлять самим проигрывателем (standalone-player’ом).
В нашем примере командой quit мы закрываем Flash-player.
Для того чтобы нарисовать кнопку install, которая будет запускать выбранную заранее программу, сделайте следующее. В том же слое Main, не создавая символ, нарисуйте, например, овал, затем напишите на нем Install нейтральным цветом. Затем создайте кнопку Install (но не помещайте ее пока на сцену), и в фрейм Up скопируйте овал с текстом «Install». Поменяйте цвет текста на более яркий, а овал вырежьте и вставьте во фрейм Hit.
Теперь во втором фрейме в слое Main создаем Keyframe, а в слое Background просто фрейм. \Затем делаем некоторые изменения: во-первых, удаляем текст «Install», а на его место перетаскиваем кнопку Install. Проследите, чтобы координаты кнопки были те же, что и у текста (панель Properties или Info).
Теперь напишем для нее скрипт:
Во второй строке мы снова используем функцию getURL(), но в качестве имени открываемого файла используется значение переменной path, которое меняется в зависимости от того, какая до этого была нажата кнопка (prog1, prog2 и т.д.) _root означает, что мы указываем абсолютный путь к переменной path. В третьей строке происходит переход к первому кадру и остановка. Это необязательно, но, по-моему, так эффективнее.
Теперь для каждой программы надо создать описание. Создайте новый символ About_prog1, тип Movie Clip, и создайте в нем описание prog1. Далее пишем такой скрипт:
Сие значит, что при загрузке нашего символа (первая строка) произойдет проверка условия (вторая строка). Помните, при клике на кнопку prog1 мы записывали в переменную visible единицу? Вот теперь мы проверяем значение этой переменной, и если оно НЕ равно 1 (оператор "!="), то символ About_prog1 не будет отображаться (третья строка: _visible свойство символа отображение/скрытие, а false его значение, «ложь»). То есть только в том случае, если visible = 1 (2, 3…), символ About_prog1 (About_prog2, About_prog3…) будет отображаться, а все остальные символы будут скрытые.
Аналогичный скрипт пишем для остальных символов, описывающих программы, меняя при этом 1 на соответствующие значение (2, 3…).
Казалось бы, все уже готово. Если мы сейчас проверим наш авторан (File > Publish Preview > Projector), то при нажатии на кнопку prog1 (prog2…) кнопка Install активируется, то есть мы перейдем во второй кадр и даже увидим описание программы. Но теперь при нажатии на другую кнопку (prog2, prog3…) описание программы не отобразится, хотя в переменную visible все-таки запишется новое значение (соответственно 1, 2, 3…) это можно узнать в окошке Debug (Control > Debug Movie). Мне лень было разбираться, почему так происходит, и я решил схитрить. Во втором фрейме я немного изменил скрипт для кнопок prog1, prog2, (…), написав вместо gotoAndStop(2)gotoAndStop(3). Затем в третьем фрейме создал Keyframe, написав для него gotoAndStop(2), и в том же фрейме удалил все скрипты для кнопок (это необязательно). Все, осталось в слое Background в третий фрейм вставить Frame, нажать Shift+F12 (File > Publish) и обрадовать себя, друзей и мир красивым автораном.