Циклическая анимация фона - Часть третья, или делаем игровой баннер

28.04.2008, автор: Stormit, рубрики: ActionScript, Flash игры, Игровые баннеры

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

Чтобы мне не переделывать работу заново, а у вас была возможность проверить как все это применять на практике, за основу я возьму результат второй части программной анимации фона. Добавлю к этому препятствия, бонусы, индикаторы, немного Actionscript и получу самый настоящий игровой баннер, вот такой:

Сценарии и gameplay как для flash-игр, так и для баннеров могут быть самые разнообразные. Я выбрал для примера классический: есть объекты, которых нужно избегать и которые наоборот необходимо собирать. Если нет такой “борьбы противоположностей”, то обычно и играть не интересно. Такой вот метод “кнута и пряника”.

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

Пример и описание: Читать полностью »

9 Хитрых

Сыграл - что радио послушал

21.04.2008, автор: Stormit, рубрики: Flash игры

Вначале даже не знал как к этому относиться. Сейчас меня это улыбает.

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

5 Хитрых

Интересная игра GROW nano vol.3

19.04.2008, автор: Stormit, рубрики: Flash игры, Новости

Нашел в сети сайт с интересными и достаточно оригинальными флэш-играми. Игры делают уже давно, а я о нем узнал только сейчас. Зацепился я за него через игру GROW nano vol.3. Простота идей поражает, а сюжет все равно затягивает - выбирая предметы в правильном порядке, нужно вылечить главного героя:

Grow nano vol3

Предыдущие волумы: vol0, vol1, vol2.
Еще одна интересная игра от них же. Я набрал 27,3 фута, дальше экран не позволяет :).

Есть в этих играх, как и в Yeti Sports, что-то такое, что ни к чему не обязывает. Какая-то возможность решить все вопросы одним кликом. И что самое интересное, не нужно уметь круто программировать или хорошо рисовать, достаточно включить фантазию и придумать что-то необычное.

P.S. Идем по нарастающей, больше элементов - больше вариантов - GROW ISLAND

7 Хитрых

Находка для аниматора - делаем камеру во флэше

10.04.2008, автор: Stormit, рубрики: ActionScript, Анимация

Когда я набрел на мульты Адама Филипса, первое что я сделал после просмотра - начал их декомпилировать. И анимацию можно детально просмотреть, и что-нибуть интересное найти. Интересное нашлось сразу, точнее я не сразу понял как из этого fla-файла, получается такой сказочный swf. Оказалось что Адам, тот еще хитрец - использует секретное оружие, которое разработал его друг Sham Banghal - виртуальную камеру. Посмотреть как она работает и скачать ее можно здесь.

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

Делаем ее так: создаем клип, внутри него делаем 2 слоя. На одном рисуем рамку по размерам флэшки (это важно, иначе могут быть пустые края по сторонам) - это объектив камеры, на другом, в кадре, пишем код:

import flash.geom.Transform;
import flash.geom.Matrix;
 
var level = 0;//на сколько клипов вверх компенсировать трансформацию
 
cameraFrame._visible = false;//делаем саму рамку невидимой
init();
 
//==================================
//don't tuch this :)
 
function init(){
    var oldMode = Stage.scaleMode;
    Stage.scaleMode = "exactFit";
    w = Stage.width;
    h = Stage.height;
    Stage.scaleMode = oldMode;
    recalcParentMatrix();
    cameraStep();
    onEnterFrame = cameraStep;
    onUnload = resetStage;
}
function recalcParentMatrix() {
    mc = _parent;
    if(level){
        var i = level - 1;
    } else {
        var i = 1000;
    }
    while (i-- && mc && mc != _root) {
        var tempTrans = new Transform(mc);
        if (!parentM) {
            parentM = tempTrans.matrix;
        } else {
            parentM.concat(tempTrans.matrix);
        }
        mc = mc._parent;
    }
    cameraTrans = new Transform(this);
    topLevelTrans = new Transform(mc);
    resetM = topLevelTrans.matrix;
    resetTopLevelColor = topLevelTrans.colorTransform;
}
function cameraStep() {
    topLevelTrans.colorTransform = cameraTrans.colorTransform;
    curM = cameraTrans.matrix;
    if (parentM) {
        curM.concat(parentM);
    }
    curM.invert();
    curM.translate(w / 2,h / 2);
    topLevelTrans.matrix = curM;
    //mc.filters = this.filters;
}
function resetStage():Void {
    topLevelTrans.matrix = resetM;
    topLevelTrans.colorTransform = resetTopLevelColor;
}

Использовать камеру очень просто, создайте анимацию, как будто она движется поверх сцены и снимает то что вам нужно. Все трансформации примененные к камере, автоматически пересчитываются на сцену. Чтобы было понятнее, вот пример (здесь анимируется ТОЛЬКО камера): Читать полностью »

14 Хитрых

Пережимаем растр не выходя из флэша

07.04.2008, автор: Stormit, рубрики: Все остальное

Случилось так, что сегодня мне пришлось переделывать презентацию после других людей. И я столкнулся с проблемой излишнего веса в одной из работ - обычная на вид презентация, длительностью 15 секунд, весит целых 6 мегабайт. Оказалось, что ее создатели (совсем американцы зажрались), не мудрствуя лукаво, взяли стоковые фотки и вставили во flash “как есть”, а потом масштабированием уменьшили до нужных размеров.

Пришлось пережимать. И тут флэш меня приятно порадовал - оказывается можно пережать растровую картинку пользуясь только его родными инструментами.

Делаем так: уменьшаем фотографию до нужного размера, копируем в буфер (Ctrl+C), дальше Edit-Paste Special, и в появившемся окне выбираем Device Independent Bitmap. Порадовало, что даже прозрачность сохраняется.

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

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

3 Хитрых