I'm love Fx
среда, 2 февраля 2011 г.
понедельник, 24 января 2011 г.
Разметался.
Что то разметался я по проектам между работои и домом.
ЛевелГенератор от Джеикоба классная штука со своими плющками но мне как первооткрывателю сложно, приходиться постоянно общаться и показывать что мне мешает.
Решил хватит буду писать свои попроще, это не так и сложно. Посмотрим.
ЛевелГенератор от Джеикоба классная штука со своими плющками но мне как первооткрывателю сложно, приходиться постоянно общаться и показывать что мне мешает.
Решил хватит буду писать свои попроще, это не так и сложно. Посмотрим.
четверг, 20 января 2011 г.
BOX2D LEVEL GENERATION TOOL V2 (НОВАЯ ВЕРСИЯ)
Вы любите клевые заголовки? Я да.
Этот подразумевает классный апдейт. Оригинал
АПДЕЙТ: Добавлена документация и классы для работы с клавиатурой.
АПДЕЙТ: Добавлена поддержка Flex 4.
Нажмите на демо игры и увидите что можете сделать при помощи Version 2. Используйте клавиатуру для управления персонажем, Вы можете собирать монеты и летать вокруг (пробел для переключения в режим полета).
Используя Bisonkick вы можете создавать по-настоящему классные игры, проще, быстрее, БОЛЬШЕ.
Но если серьезно в V2 есть несколько на самом деле классных нововведений и использовать их проще простого, а именно:
Создайте персонажа. И делайте с ним все что вам взбредет в голову.
SWC уже имеет встроенный Box2d 2.1a. То есть все что вам нужно это просто одна SWC.
АПДЕЙТ: Я добавил полноценную поддержку клавиатуры и она хороша. Новая загрузка заменит предыдущее SWC.
Я должен добавить лучшую поддержку для событий с клавиатуры ( keyboardEvents ) и я реализую это в ближайшее время. В данный моменты пробел включает/выключает режим полета. Загрузить
Box2dLevelGenerationToolV2 1.0
Документация
Далее пример приложения. Оно же с более подробным объяснением кода будет добавлено в ближайшее время. В данный момент swc только для Flex AS3 (не Flash ) проектов, знает ли кто-нибудь как получить класс mx.core.BitmapAsset во Flash (Help!).
Создайте новый AS3 проект.
Добавьте SWC в папку с библиотеками в вашем AS3 Project
Правый клик на корневой папке Properties --> далее клик по Actionscript Build Path --> Add SWC и добавьте из места расположения Box2dLevelGeneratorTollV2.
Импортируйте ее в главный класс проекта. ( Убедитесь что имя вашего класса соответствует приведенному в коде, в противном случае измените его ).
Вы можете скачать изображения из assets демо игры по этой ссылке.
Создайте папку с именем assets и поместите в нее изображения.
Обратите внимание что большая часть кода это создание текстового поля и гиганитскии массив карта.
АПДЕЙТ: Код обновлен с учетом демонстрации нового Key класса ( по стилю AS2 ) и слушателя событий keyup, keydown. Приступим к коду:
Этот подразумевает классный апдейт. Оригинал
АПДЕЙТ: Добавлена документация и классы для работы с клавиатурой.
АПДЕЙТ: Добавлена поддержка Flex 4.
Нажмите на демо игры и увидите что можете сделать при помощи Version 2. Используйте клавиатуру для управления персонажем, Вы можете собирать монеты и летать вокруг (пробел для переключения в режим полета).
Используя Bisonkick вы можете создавать по-настоящему классные игры, проще, быстрее, БОЛЬШЕ.
Но если серьезно в V2 есть несколько на самом деле классных нововведений и использовать их проще простого, а именно:
Создайте персонажа. И делайте с ним все что вам взбредет в голову.
- Создайте “Персонажа”, это предоставляет возможность управления им с клавиатуры и некоторые другие возможности например отловка событий ( HeroEvents ).
- Создайте кастомные скины для уровня которые автоматически изменят свой размер под размер ваших физических объектов. ( Или, если хотите не изменят ).
- Задайте режим полета для вашего персонажа, если хотите чтобы он мог летать.
- Разрушайте физические объекты простым и безопасным способом.
- Задайте высоту прыжка, скорость бега/полёта, смертельную/повреждающую силу удара ( значения урона нанесенное персонажу при ударе )
- Создавайте классные Box2d игры без необходимости в больших познаниях Box2d.
SWC уже имеет встроенный Box2d 2.1a. То есть все что вам нужно это просто одна SWC.
АПДЕЙТ: Я добавил полноценную поддержку клавиатуры и она хороша. Новая загрузка заменит предыдущее SWC.
Я должен добавить лучшую поддержку для событий с клавиатуры ( keyboardEvents ) и я реализую это в ближайшее время. В данный моменты пробел включает/выключает режим полета. Загрузить
Box2dLevelGenerationToolV2 1.0
Документация
Далее пример приложения. Оно же с более подробным объяснением кода будет добавлено в ближайшее время. В данный момент swc только для Flex AS3 (не Flash ) проектов, знает ли кто-нибудь как получить класс mx.core.BitmapAsset во Flash (Help!).
Создайте новый AS3 проект.
Добавьте SWC в папку с библиотеками в вашем AS3 Project
Правый клик на корневой папке Properties --> далее клик по Actionscript Build Path --> Add SWC и добавьте из места расположения Box2dLevelGeneratorTollV2.
Импортируйте ее в главный класс проекта. ( Убедитесь что имя вашего класса соответствует приведенному в коде, в противном случае измените его ).
Вы можете скачать изображения из assets демо игры по этой ссылке.
Создайте папку с именем assets и поместите в нее изображения.
Обратите внимание что большая часть кода это создание текстового поля и гиганитскии массив карта.
АПДЕЙТ: Код обновлен с учетом демонстрации нового Key класса ( по стилю AS2 ) и слушателя событий keyup, keydown. Приступим к коду:
package
{
import Box2D.Common.Math.b2Vec2;
import Box2D.Dynamics.b2World;
import com.jacobschatz.bisonkick.autogeneration.Box2DLevelGenerationV2;
import com.jacobschatz.bisonkick.autogeneration.Key;
import com.jacobschatz.bisonkick.autogeneration.b2GSkinning;
import com.jacobschatz.bisonkick.autogeneration.events.HeroEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.ui.Keyboard;
[SWF(frameRate='60', backgroundColor='#000000')]
public class SampleGame extends Sprite
{
private var world:b2World = new b2World(new b2Vec2(0,10.0),true);
private var b2dLG:Box2DLevelGenerationV2;
//4 изображения доступны для загрузки по //http://jacobschatz.com/wp-content/uploads/2010/12/bo2dgV2Sample/coin.zip
[Embed(source="assets/coin.png")]
private var _coin:Class;
[Embed(source="assets/hero.png")]
private var _hero:Class;
[Embed(source="assets/goal.png")]
private var _goal:Class;
[Embed(source="assets/plat.png")]
private var _plat:Class;
//Карта сгенирированная BisonKick
//order: x , y , height, width, rotation, isDynamic, shape, friction,density,restitution,ID & vertices
private var map:Array = [
[173.5,769.35,49.99999999999999,148.99999999999997,0.2557344265043148,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[346.5,893.35,50,245,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[239,1016.3499999999999,49.999999999999886,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[452,1084.35,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[531,991.35,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[479,1312.35,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[681.5,1415.35,49.99999999999998,174.99999999999997,0.415088820880265,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1008.25,1586.9,49.99999999999999,127.99999999999993,-0.3600593293510518,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[858,1664.35,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1042,2044.35,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1218,2238.35,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1131.5,2406.85,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[591.5,1092.35,50,1023,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[434.5,666.3499999999999,49.99999999999998,187.00000000000003,-0.344019607077031,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[817.5,572.35,50,135,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[207,265.35,50.00000000000005,49.99999999999999,0.04256942056577332,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[705.5471568880848,288.6578960971827,49.99999999999998,348.97720886209925,-0.14832783412176492,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1051.435674945717,313.46139669152507,49.99999999999999,226.58934344245162,-0.6667484216307344,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1131,1335.35,50,340,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[209,180.35000000000002,32,32,0,true,'CIRCLE' , 0.5,0.5,0.5,'hero', '()','FOLLOWER']
,[1865.05,1742.175,3450.9500000000003,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[34.899999999999864,1723.8,3447.7000000000003,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[974.1454901967322,3450.721983239433,1911.2657917113074,50.000000000000036,1.5883899390533787,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[964.0954901967323,24.921983239432997,1911.2657917113074,50.000000000000036,1.5883899390533787,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1572.5,472.5,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1710.05,1017.5,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[641.25,1885,50,402.5,0.3404877139747048,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1645.05,2575.15,50,50,0,true,'CIRCLE' , 0.5,0.5,0.5,'goal', '()']
,[1819,181,50,50,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[856.5,2604.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1086,2785.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[806,2977.6,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1058.5,3150.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1383.5,3302.6,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1573.5,3335.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1163.5,3220.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[908.5,3065.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[943.5,2880.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[903.5,2705.1,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1056,2502.6,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1221,2311.6,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[1061,2136.6,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[841,2064.85,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[808.5,1784.85,50,237,0,false,'SQUARE' , 0.5,0.5,0.5,'plat', '()']
,[421.65,484.95000000000005,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[441.65,506.95000000000005,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[459.65,524.95,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[385.65,518.95,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[405.65,540.95,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[425.65,558.95,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[357,546.95,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[377,568.95,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
,[397,586.95,26,26,0,true,'CIRCLE' , 0.5,0.5,0.5,'jewel', '()']
];
private var heroLife:Number = 100;
public function SampleGame()
{
init();
}
private function init():void
{
var tf:TextField = new TextField();
var tfm:TextFormat = new TextFormat(null,40);
tf.width = 900;
tf.height = 900;
tf.text = 'Use your arrow keys to control the "hero".\nCollect the coins and get to the goal. And explore.\nPress spacebar to turn on/off flying mode.';
tf.textColor = 0xFFFFFF;
tf.mouseEnabled = false;
tf.setTextFormat(tfm);
tf.x = 700;
tf.y = 700;
addChild(tf);
this.scaleX = 0.5;
this.scaleY = 0.5;
b2dLG = new Box2DLevelGenerationV2(world,this,true,map,false);
b2dLG.keyDownHandler = keydown;
b2dLG.keyUpHandler = keyup;
b2dLG.addEventListener(HeroEvent.HURT,heroHurt);
b2dLG.addEventListener(HeroEvent.COIN,heroCoin);
b2dLG.addEventListener(HeroEvent.GOAL,heroGoal);
b2dLG.addEventListener(HeroEvent.ITEM,heroItem);
var skins:Object = {hero:_hero,coin:_coin,goal:_goal,plat:_plat};
var skinSettings:Object = {plat:b2GSkinning.STRETCH,hero:b2GSkinning.STRETCH};
b2dLG.createLevel('hero','goal','jewel',skins,skinSettings);
b2dLG.hurtImpulse = 10;
b2dLG.heroCanFly = false;
b2dLG.heroJump = 3.0;
addEventListener(Event.ENTER_FRAME,update);
}
private function keydown():void
{
if(Key.isDown(Keyboard.SPACE))
{
b2dLG.heroCanFly = !b2dLG.heroCanFly;
}
}
private function keyup():void
{
//Что то классное произоидет здесь;
}
private function heroCoin(e:HeroEvent):void
{
b2dLG.destroyList.push(e.body);
}
private function heroGoal(e:HeroEvent):void
{
trace("WINNER");
}
private function heroHurt(e:HeroEvent):void
{
if(heroLife > 0)
{
heroLife -= 20;
//trace('Персонаж поврежден, осталось жизни: ' + heroLife);
}
else
{
//trace("Персонаж мертв" + e.impulse);
//b2dLG.heroDead = true;
}
}
private function heroItem(e:HeroEvent):void
{
if(e.itemName == 'heart')
{
b2dLG.heroCanFly = true;
}
}
private function update(e:Event):void
{
b2dLG.update(false);
}
}
}
Подписаться на:
Сообщения (Atom)