28.04.2008, автор: Stormit, рубрики: ActionScript, Flash игры, Игровые баннеры
Пора заканчивать с этой темой, а то это начинает казаться сложным.
Для лучшего понимания нижеизложенного материала стоит почитать предыдущие части.
Чтобы мне не переделывать работу заново, а у вас была возможность проверить как все это применять на практике, за основу я возьму результат второй части программной анимации фона. Добавлю к этому препятствия, бонусы, индикаторы, немного Actionscript и получу самый настоящий игровой баннер, вот такой:
Сценарии и gameplay как для flash-игр, так и для баннеров могут быть самые разнообразные. Я выбрал для примера классический: есть объекты, которых нужно избегать и которые наоборот необходимо собирать. Если нет такой “борьбы противоположностей”, то обычно и играть не интересно. Такой вот метод “кнута и пряника”.
Теперь по порядку, как это сделано. Не буду говорить о чистоте кода, его можно оптимизировать 10тыс. раз. Наоборот, постараюсь внести как можно меньше изменений в примеры из предыдущих уроков. Так будет понятнее, а гуру flash-программирования легко могут переписать код под себя.
Пример и описание: Читать полностью »
21.04.2008, автор: Stormit, рубрики: Flash игры
Вначале даже не знал как к этому относиться. Сейчас меня это улыбает.
Итак, расслабтесь, сядьте поудобнее и приготовьтесь насладиться этой увлекательной игрой с запутанным сюжетом и сложной головоломкой. Нужно очень постараться, и только ловкость и смекалка помогут восстановить справедливость и победить злодея. Начали
19.04.2008, автор: Stormit, рубрики: Flash игры, Новости
Нашел в сети сайт с интересными и достаточно оригинальными флэш-играми. Игры делают уже давно, а я о нем узнал только сейчас. Зацепился я за него через игру GROW nano vol.3. Простота идей поражает, а сюжет все равно затягивает - выбирая предметы в правильном порядке, нужно вылечить главного героя:

Предыдущие волумы: vol0, vol1, vol2.
Еще одна интересная игра от них же. Я набрал 27,3 фута, дальше экран не позволяет :).
Есть в этих играх, как и в Yeti Sports, что-то такое, что ни к чему не обязывает. Какая-то возможность решить все вопросы одним кликом. И что самое интересное, не нужно уметь круто программировать или хорошо рисовать, достаточно включить фантазию и придумать что-то необычное.
P.S. Идем по нарастающей, больше элементов - больше вариантов - GROW ISLAND
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;
}
Использовать камеру очень просто, создайте анимацию, как будто она движется поверх сцены и снимает то что вам нужно. Все трансформации примененные к камере, автоматически пересчитываются на сцену. Чтобы было понятнее, вот пример (здесь анимируется ТОЛЬКО камера): Читать полностью »
07.04.2008, автор: Stormit, рубрики: Все остальное
Случилось так, что сегодня мне пришлось переделывать презентацию после других людей. И я столкнулся с проблемой излишнего веса в одной из работ - обычная на вид презентация, длительностью 15 секунд, весит целых 6 мегабайт. Оказалось, что ее создатели (совсем американцы зажрались), не мудрствуя лукаво, взяли стоковые фотки и вставили во flash “как есть”, а потом масштабированием уменьшили до нужных размеров.
Пришлось пережимать. И тут флэш меня приятно порадовал - оказывается можно пережать растровую картинку пользуясь только его родными инструментами.
Делаем так: уменьшаем фотографию до нужного размера, копируем в буфер (Ctrl+C), дальше Edit-Paste Special, и в появившемся окне выбираем Device Independent Bitmap. Порадовало, что даже прозрачность сохраняется.
Если нужно получить не все изображение, а только его уменьшенную часть, то перед копированием в буфер, нужно сделать Break Apart и избавиться от ненужных частей.
Думаю впереди еще будет немало задач, в которых этот способ, хоть немного, но оптимизирует рабочий процесс.