Как замутить свой screenmate

A.P.$lasH

Xakep, номер #049, стр. 036-037

ap-slash@tfs.kiev.ua

Screen Babe

Screen Mate (экранный дружище) - пестрая маленькая бестия, которая обитает на рабочем столе. Она разбрасывает иконки, царапает обои, чихает и кашляет в самый неподходящий момент. Проще говоря, изо всех сил старается тебе помочь. Разумеется, о вкусах не спорят. Кому-то нравится толстая салатовая крыса, которая каждые 20 минут будет орать "Боже, царя храни!", а кому-то больше по душе глупо попискивающий Микки-Маус. На всех не угодишь, но можно замутить свой собственный скринмэйт. Ни бельмеса в программировании? Не беда. Под чутким руководством программы Screen Babe это по силам любому - от Арнольда Шварценеггера до профессиональной асфальтоукладчицы. Проверим?

<А как хорошо все начиналось...>

Начнем с дружественного визита на сайт компании Casperlab Software - именно там обитает столь необходимая нам программа. Вот тебе ссылка на дистрибутив - http://www.casperlab.com/download/screenbabe.exe, скачивай.

Интерфейс получился на удивление удачным - все инструменты под рукой, нет ничего лишнего. Скринмэйты рождаются из чрева старых добрых GIF, JPG и BMP, появляются из любого места твоего захламленного экрана, таранят чердаком таскбар под звуки в формате Midi, WAV, MOD и MP3... Красота. Уже скачал? Запускай.

Стартовый экран программы напоминает классический перекрёсток из дремучих русских сказок. По первой иконке кликнешь (Старт) - работать начнешь, на вторую топнешь (Обучение) - уму-разуму научат, на третью ненароком свалишься (Регистрация) - 15 зеленых потеряешь. Жми на первую. Остальные пока и без нас перетопчутся. В будущем, если захочешь, воспользуешься кнопками на тулбаре, а сегодня будем учиться по пунктам главного меню программы, чтобы названия основных действий лучше запомнить. Выбирай в меню File - New Project (Файл - Новый проект). Начнем, пожалуй.

<Он сказал: "Поехали!">

Так как скринмэйты из воздуха не появляются (какая жалость, скажи?), программа тут же попытается уточнить у своего нового хозяина исходные данные. Соглашайся. Разберем очередное диалоговое окошко по пунктам. Перво-наперво Screen Babe запрашивает название файла с изображением грядущего шедевра (Select animation to be used in Screen Mate event). Желательно выбрать GIF с анимацией, чтобы потом не мучиться в поисках дополнительных кадров. Лично я разобрал ресурсы игрушки EggSucker (http://www.raptisoft.com) и вытащил оттуда симпатичную фиолетовую ящерицу, причём с крыльями. Далее выбираем событие (Event), при котором этот рисунок появится на экране (When animation should appear on screen). Screen Babe предлагает на выбор On Idle (это когда ты не пытаешься размазать скринмэйт курсором по экрану, вызвать его меню, перетащить за хвост к таскбару), On Startup (при запуске своего творения), On Close (при его закрытии) и Custom (для вызова из других событий, а также из пунктов пользовательского меню). Выбирай On Startup, там разберемся. После этого нужно указать позицию на экране, из которой скринмэйт впервые закричит тебе "Джеронимо!" (Where is the first position of this animation on screen). Для начала можешь поставить Top screen random (случайная позиция на самой верхушке рабочего стола). Напоследок укажем How is the character movement on the screen - в какую сторону ломанется твой питомец, рыча и лязгая бивнями. Если хочешь, используй классический вариант Fall into taskbar (падает на таскбар), однако шар земной не станет кубом, если ты выберешь более тривиальные Move to left/right/top/bottom (перемещается влево/вправо/вверх/вниз) или еще более скромную No movement (стоит столбом). Все, кликай на ОК. Теперь в программе стали доступными несколько дополнительных действий. Одно из самых главных - "Save project". Понимаешь, да? Нажми на Ctrl+S.

Ты только что создал первое событие, которое управляет скринмэйтом. Судя по названию (On Startup), оно выполняется при запуске твоего приложения. Я выбрал для этого события изображение фиолетового яйца (кажется, это яйцо слона), поставил его на вершине рабочего стола и намекнул на то, что пора прыгать в сторону таскбара. Ты не поверишь, но этого уже вполне достаточно для создания полноценного скринмэйта. Выбери в меню программы пункт Run - Preview Screen Mate (Выполнить - Показать скринмэйт). Хорошо летит... А что тебе не нравится? Да, оно улетает за пределы таскбара и больше не появляется. Ну, и хр... ну, и что с того? Это ведь только начало. Не торопись, сейчас все исправим.

<Нам нужны активные ребята>

Для продолжения банкета нам нужно создать дополнительное событие, т.к. OnStartup выполняется всего один раз. В главном меню программы есть пункт Event - Add event (Событие - Добавить событие). Воспользуйся. В качестве картинки я выбрал серию кадров под кодовым названием "Ящерица, которая летит налево". Событие - On Idle, направление - Move left, начальная позиция - Current position (в данном случае - позиция по умолчанию). Почему именно Current position, объясню позже. Слева от нашей картинки есть список, над которым красуется надпись "Action/Event" (Действие/Событие). В первой колонке перечислены условия, во второй можно указать соответствующее действие. В нашем случае нужно выделить событие OnHitBottomScreen (как только объект ударится о нижнюю границу экрана) или OnHitTaskBar (о панель задач) и нажать на появившуюся кнопку с троеточием. Если ты все сделал правильно, на экране должно появиться диалоговое окно с заголовком Select Action (Выбрать действие). С его помощью твой скринмэйт сможет открывать браузер с любым адресом, выводить на экран текстовые сообщения, отправлять комбинации клавиш произвольной программе, перемещать курсор мышки... Нет смысла перечислять все возможные варианты. Важно лишь то, что любое из этих действий стартует только в результате выполнения указанного тобой условия. Выбирай из списка действие "Run an animation", а в качестве параметра укажи название своего нового события (скорее всего, оно у тебя называется On idle #2). Запускай скринмэйт.

ОК, яйцо падает на таскбар и превращается в грустную ящерицу, флегматично дефилирующую в сторону левой границы экрана. Это уже хорошо. Теперь понимаешь, зачем нужно было выбрать именно Current position? Чтобы птеродактиль не появился на пустом месте в 20 метрах от яйца. Это же не X-Files, это жестокая реальность. Ящеры именно так и рождаются, поверь мне. Есть лишь одно кардинальное отличие. Еще ни одна фиолетовая ящерица не появилась на свет в абсолютной тишине. К счастью, для Screen Babe не проблема озвучить каждый кадр твоего детища.

<Эта музыка будет вечной>

К сожалению, я понятия не имею, что именно кричат новорожденные рептилии - "Мама!", "Папа!" или "Баба Зина!", поэтому ограничимся стандартным звуком куриного яйца, разбитого всмятку. Начнем с того, что озвучить нужно первый кадр летящей ящерицы, чтобы звук раздался сразу же после ее появления. Выдели первый кадр мышкой (вокруг него должна появиться синяя рамочка) и выполни пункт меню Sound - Add sound on current frame (Звук - Добавить звук в активный кадр). В твоем распоряжении ряд дополнительных параметров - Play once (Проиграть звук один раз), Re-Play when loop (каждый раз, когда на экране появляется этот кадр), Continous loop (зациклить воспроизведение) и Play in all-animation except WAV (непрерывно, на протяжении всей последовательности кадров). Нам нужен первый вариант. Сам понимаешь, во всех остальных случаях фиолетовая ящерица, издающая звук разбивающихся яиц, будет выглядеть неэстетично. Да, она пролетает в опасной близости от таскбара, но это еще ни о чем не говорит.

<Последние штрихи>

Да, гулящая попалась рептилия... Влево она летит, однако после этого снова скрывается за пределами экрана. Впрочем, это дело десятое. Ты уже знаешь, как добавить новую последовательность кадров, поэтому запросто прицепишь к проекту летящую вправо ящерицу. Останется всего лишь указать в ее событии OnHitRightScreen выполнить анимацию левосторонней ящерицы, в которой OnHitLeftScreen указан вызов правосторонней. Т.е. зациклить оба события, понимаешь? Дело за малым - навести окончательный марафет нашему проекту.

Помни о том, что поведением всех кадров управляет событие OnDrawFrame (вывод картинки на экран). Помимо этого, можно указать отдельное действие для каждого изображения - пункт меню Edit - Add/Modify Action on Current Frame (Правка - Добавить/изменить действие для текущего кадра). Например, я добавил в первые шесть кадров перемещение изображения на 2 пиксела вниз, а в остальные - на два пиксела вверх. Соответственно, ящерица полетела по легкой пьяной синусоиде. В списке Screenmate Settings (параметры скринмэйта) полезно поставить галку напротив опций Always on Top (поверх всех окон), Dragable (можно перетаскивать мышкой) и Hide from Taskbar (не показывать на панели задач).

Справа от окна предпросмотра текущего кадра есть список Custom popup menu (пользовательское выпадающее меню), в которое можно добавить собственные пункты (например, вызов браузера с переходом на твою домашнюю страницу).

Словом, все как в лучших домах Парижа. Осталось выбрать в меню долгожданный Run - Build Screen Mate (Выполнить - Создать скринмэйт) и почувствовать себя акушеркой. Мадам, у вас фиолетовая ящерица!

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

Более простой конструктор скринмэйтов можно найти по адресу www.screenmate.net. Говорю это тебе на тот случай, если на освоение программы Screen Babe у тебя нет времени :).

Если ты не художник, и предпочитаешь "оживлять" персонажей, нарисованных другими, то, возможно, тебе стоит иметь под рукой SWF Decompiler (www.sothink.com) - удобный инструмент для извлечения звуков, текстов и картинок из твоих любимых flash-роликов.

Содержание
ttfb: 11.657953262329 ms