Новые направления в изучении флэша

Август 10th, 2009

В последнее время стало очень интересно узнать как флэш взаимодействует с окружающим его миром, а в  частности: flash + java, flash + php, flash + DB, Flash + online server

В самом ближайшем будущем начну постигать эти направления и если смогу – буду выкладывать свои наработки.

Всем удачи в проектах!

Идеи

Форум – Рецепты разработки игр на флэш

Апрель 17th, 2009

Приглашаю программистов, дизайнеров и всех неравнодушных к созданию игр на флэш на наш новый форум размещенный по адресу http://forum.romanuk.net/index.php (ссылка больше не актуальна, оставлю ее ради памяти :) )

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

Новости

Кошаки и сосиски

Апрель 16th, 2009

В начале апреля я принял участие в первой в свой жизни социальной акции. Социальная акция – конечно громкое название, однако оно наиболее близко отражает суть этого явления :)
Смысл акции – накормить бездомных котов и кошек, проявить милосердие и заботу к братьям нашим меньшим. Что и было сделано. Купленные сосиски расходились с той же скоростью, с какой выпивалась бутылка прикупленного пива.
Главное что цель была достигнута, коты остались накормлены, организаторы – напоены, все приобрели хорошее настроение.
Более подробно об акции можно прочитать тут
Если вам нравятся коты и кошки, можете посетить сайт http://kotiku.ru. Там вы найдете множество информации о кошаках, их фотографии, новости о выставках, и другие кошачьи новости.

Новости

Правила оформления бага

Апрель 6th, 2009

Баг необходимо оформлять следующем образом:

  1. Краткое описание (название, одним предложением)
  2. Шаги, которые приводят к багу (здесь может быть один и более шаг, нумеруйте их пожалуйста)
  3. Что происходит (то, что проиходит по выполнении последнего шага)
  4. Что по Вашему мнению должно пройзойти (то, что должно было произойти по выполнению последнего шага)

Если необходимо, сопровождайте баг изображениями.

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

Беларусь сквозь призму субкультуры ИТ

Март 31st, 2009

Очередная флэш идея настигла меня, когда я шел на работу наслаждаясь утренней беспечностью Минска…
Это уже не новое, такое уже было. Но не было про Беларусь.
Итак, представляем себе карту (желательно контурную) нашей прекрасной родины.
belarus_map

Только вместо точек и наваний городов представляем свойственные местности картинки-ярлычки. Ну скажем для Бобруйска – зоопарк (вообще культовое место), для Бреста – крепость (надо только прикольно это обыграть), для Минска – библотека, Гродно – рынок, Гомель – аэс.

Это конечно требует хорошего знания истории и культуры данных мест, но – все это можно узнать, было бы желание.

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

Да и просто беларусам должно быть очень интересно, потому что такого представления Беларуси еще нигде не было.

А что думаешь ты?

Идеи ,

Идея для флэш анализатора кода

Март 30th, 2009

Сегодня пришла в голову идея для флэш бомбы – анализатора кода.
Незнаю, может это уже где-то есть… но идея такова: пользователю будет показана форма для вставки кода (программного) и кнопка аля Сабмит. Ползьователь вставляет код в поле и нажимает кнопку. Проигрывается флэш ролик бурного процесса анализирования и выдается какое-нибудь прикольное описание характера человка, написавшего код.
Для реализации этой простой идеи надо написать простенький флэш ролик и штук 10 описаний характера программиста в хай тек стиле.
Если описания будут прикольные, то такая шутка будет довольно популярной в айти среде.

Приглашаю всех к обсуждению идеи :)

Идеи ,

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

Март 19th, 2009

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

УРА!

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

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

http://romanuk.net/cassiopeia

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

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

Поворот и движение объекта за целью (мышью)

Март 9th, 2009

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

Для начала рекомендую к ознакомлению (хотя бы краткому) вот этой статьи.

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

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
30
31
32
33
34
35
36
37
38
39
var RAD_DEG:Number = 180 / Math.PI;

_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;
game.player.speed = 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;
}
}
}

function moveClip ():Void
{
game.player.clip._x -= Math.cos (game.player.clip._rotation / RAD_DEG) * game.player.speed;
game.player.clip._y -= Math.sin (game.player.clip._rotation / RAD_DEG) * game.player.speed;
}

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

В строках с 12 по 27 происходит процесс поворота объекта, который подробно рассмотрен здесь. Я не буду повторно расписывать его в этом рецепте. Давайте посмотрим на строки 29 – 33. Функция moveClip () выполняет перемещение объекта по экрану. Координата х клипа уменьшается на произведение косинуса угла поворота клипа на скорость объекта. Координата у клипа уменьшается на произведение синуса угла поворота клипа на его скорость объекта. Таким образом, достигается иллюзия плавного поворота и движения.

Смотрим что получилось тут:
moving and rotate object around the mouse
Исходник примера тут: movingrotate




Новости, Создание Flash игр , , , , ,

Создание шрифта во 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 игр , , , , , ,