Archive

Posts Tagged ‘Flash’

Cassiopeia в бета тестировании

Март 19th, 2009

Фанфары! Горны! Барабаны… и прочая торжественная музыка!
Наконец-то я закончил работу над основной частью функционала моей компьютерной флэш игры.

УРА!

Я работал над ней полтора года… До этого года два морально готовился к этому. И, хоть игра еще не до конца готова, ее уже можно смотреть, пробовать и играть.

Если кому-то будет интересно – добро пожаловать на:

http://romanuk.net/cassiopeia

Если Вы хотите принять участие в разработке этого безусловно самого амбициозного и масштабного проекта, можете присылать свои пожелания и рекомендации на maniak |сабачка| tut.by

Cassiopeia, Новости , , , , ,

Создание шрифта во Flash CS3

Февраль 26th, 2009

Недавно понадобилось создать шрифт во Flash. К своему изумлению я понял, что это для меня загадка. Но я ее разгадал, вот рецепт:

1. Если у вас закрыто окно библиотеки клипов (library) откройте его (Window – Library или Ctrl + L).

2. Далее кликаем кнопочку (честно говоря не знаю точного названия) More options, как показано на картинке.

flash cs3 library view

flash cs3 library view

3. Из меню выбираем опцию New font.

Все, диалоговое окно позволит вам добавить нужный шрифт с предустановленными параметрами. Если вы не знаете что с ним делать, расслабтесь, главное что вы знаете как его добавлять. Поверьте на слово, когда-нибудь это вам пригодится. :)

Создание Flash игр

Поворот объекта мышью

Февраль 13th, 2009

Поворот объекта за мышью реализуется очень просто. Надо просто в каждом кадре присваивать свойству _rotation клипа игрока (объекта) арктангенс угла положения мыши на экране относительно этого клипа. Наверное, прочитав предыдущее предложение, Вы погрустнели. Но это не беда. Я и сам до конца не понимаю этого. :) Добрые индусы, писавшие Flash, позаботились о том, что бы класс Math содержал готовую функцию atan2 (), которую мы и будем использовать для нахождения этого арктангенса угла..

Давайте рассмотрим код actionscript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
_root.attachMovie ("player", "player", 0, {_x:Stage.width / 2, _y:Stage.height / 2});

game = {};
game.player = {};
game.player.clip = _root["player"];
game.player.flexibility = 5;
game.player.allowedError = 5;

function rotateObject ():Void
{
var targetAngle:Number = Math.atan2 (game.player.clip._y - _root._ymouse, game.player.clip._x - _root._xmouse);
var errorAngle:Number = targetAngle * 180 / Math.PI - game.player.clip._rotation;
if (Math.abs (errorAngle) > game.player.allowedError)
{
if (((errorAngle > 0) && (errorAngle < 180)) || (errorAngle < -180))
{
game.player.clip._rotation += game.player.flexibility;
}
else
{
game.player.clip._rotation -= game.player.flexibility;
}
}
}

_root.onEnterFrame = function ()
{
rotateObject ();
}

Вначале мы добавляем клип с игроком на экран. Затем создаем объект game, в котором будем хранить всю информацию об игре. Обратите внимание как мы связываем добавленный клип игрока, с свойством clip объекта game.player. Теперь мы можем использовать это свойство если захотим провести какую-либо операцию с клипом на сцене. О свойствах flexibility и allowedError мы поговорим чуть ниже, а пока давайте перейдем к разбору функции rotateObject ().

Итак, пресловутая функция atan2, о которой я вкратце упоминал в начале статьи. Именно она будет делать основную работу и нам совершенно неважно как она ее будет делать, потому что на выходе мы будем получать именно тот угол, на который надо повернуть наш клип игрока, что бы он смотрел прямо на указатель мыши. Пожалуйста, почитайте в help’е Flash о том как она работает, мы же только коснемся тех параметров, которые надо передавать в эту функцию. Итак, первый параметр – это расстояние по оси Y от объекта игрока до Y координаты мыши, второй параметр – это расстояние по оси X от объекта игрока до X координаты мыши. Как расстояние определяется на прямой линии? Правильно, вычитанием одной координаты из другой. Это мы и делаем прямо при внесении параметров в функцию, т.е. налету.
В принципе, на этом можно было бы и остановится, так как мы уже имеем угол, на который надо поворачивать наш игровой объект. Мы этот угол можем присваивать свойству _rotation нашего клипа и он будет поворачиваться. Но в таком случае это будет происходить мгновенно.
Если Вы хотите добавить немного реалистичности в процесс поворота, то вам надо несколько замедлить этот процесс. И вправду ведь, невозможно повернутся мгновенно, в природе все происходит с определенной задержкой.
Итак, следующие строки кода, начиная с объявления переменной errorAngle замедляют и управляют процессом поворота. errorAngle – это величина, показывающая, на сколько отличается текущий угол поворота объекта от угла, на который надо повернуть объект, что бы он смотрел прямо на мышку. Дальше происходит проверка на то, на сколько ошибка отклонения больше или меньше реального угла поворота, и если она отличается на величину allowedError, то делается коррекция, т.е. объект поворачивается по или против часовой стрелке.
Flexibility влияет на то, как быстро объект будет поворачиваться. В флэш играх это очень важный показатель, влияющий на верткость объекта. Так, например, меняя этот показатель от меньшего к большему можно сделать несколько самонаводящихся ракет с различной степенью маневренности.
allowedError это то допустимое значение ошибки отклонения при котором поворот происходить не будет. Т.е. она позволяет создать некий коридор (например, до 5 градусов), при котором поворот происходить не будет.

Не думал что получится столько букв, но надеюсь, эти комментарии хоть как-то помогут Вам разобраться в происходящем. Если нет, рекомендую к прочтению книгу «Flash. Трюки» O’Relly. Приведенный в данной статье метод полностью основывается на одном из трюков этой книги.

Исходник с примером поворота объекта мышью во Flash (.fla):

rotateobject

Пример поворота объекта мышью во Flash (.swf)

The Flash plugin is required to view this object.

rotateobject




Создание Flash игр , , , , , ,

Проверка плагина подсветки ActionScript кода

Январь 28th, 2009

Давно хотел себе поставить плагин для подсветки кода в постах. И вот, после долгих, но как оказалось плодотворных поисков я смог его найти и установить.

Плагин поддерживает огромное количество языков и имеет мощную систему настроек. Советую. :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private function sortScore ():Void
{
    var id:Number = 0;
    cassio.fw.sHs = {};
    for (var i:Number = 0; i < cassio.fw.hs.nLength; i++)
    {
        for (var j:Number = 0; j < cassio.fw.hs.nLength; j++)
        {
            if (cassio.fw.hs[id].score < cassio.fw.hs[j].score && !cassio.fw.hs[j].isChecked)
                id = j;
        }
       
        cassio.fw.sHs[i] = {};
        cassio.fw.sHs[i].score = cassio.fw.hs[id].score;
        cassio.fw.sHs[i].username = cassio.fw.hs[id].username;
       
        cassio.fw.hs[id].isChecked = true;
        id = getFirstUncheckedElementId ();
    }  
}

Создание Flash игр ,

Cassiopeia: Новая фаза разрабоки

Ноябрь 25th, 2008

С радостью сообщаю что подходит к концу 4 фаза разработки игры, в рамках которой я пытался уделить больше внимания графическим элементам, улучшить дизайн и в целом «картинку» игры.

В рамках 5-ой фазы внимание будет уделено повышению играбельности.

Итак, что я хочу внедрить:

1. Добавление возможности использования различного вида оружия
1.1. Различные виды лазера (4 шт)
1.2. Различные виды ракет (3 шт)
1.3. Различные виды щита (3 шт)
2. Подсчет очков (денег) за сбитые корабли врага.
3. Добавление возможности производить апгрейд корабля.
3.1. Экран апгрейдов.
3.1.1. Картинка корабля со слотами.
3.1.2. Доступные улучшения (в трех секциях: лазер, ракеты, щиты).
3.1.3. Кнопки Применить и Закрыть.
3.2. Игра не становится на паузу во время апгрейда.
4. Создание стартового меню.
4.1. Элемент меню – Начать игру.
4.2. Элемент меню – Доска счета.
4.3. Элемент меню – Об игре.
5. Создание анимации гиперпространственного прыжка.

Будем надеятся что в процессе у меня не возникнет особых проблем, особенно на уровне архитектуры приложения.

Cassiopeia , , , , , ,

Первая новость о Cassiopeia

Ноябрь 17th, 2008

Что такое Cassiopeia? Это флэш игра о приключениях молодого космического пирата разрабатываемая в недрах «Кузницы мысли» молодым и творческим коллективом (мной, дизайнером и арт-директором). До недавнего времени я старался сохранить в секрете всю информацию о моем детище, но по мере работы в процесс вовлекались дополнительные люди, ко мне было много вопросов и я решил больше не таиться.
Начиная с этого момента в данном разделе я буду публиковать все новости по игре.
Итак, собственно первый скриншот:

cassiopeia flash game main view

cassiopeia flash game main view

Cassiopeia , , ,

Тайна девятой планеты

Август 27th, 2008

Нижеследующий флэшролик открывает серию моих работ по изучению дальнего и ближнего космоса :)

Всем кому интересно – изучаем скорость смены времен года на планетах Солнечной системы:

(по просьбам трудящихся выкладываю новую версию файла: теперь планеты не сталкиваются, а фокус на планету переходит по событию onPress)

solarsystem_20

Flash ,

Мой первый флэш сайт :)

Август 27th, 2008

Кликаем по ссылке:

index

Flash ,