Anthill is a tiny framework focused on game development. It has a small set of classes so it’s not a complete tool for creating games, it’s more an add-on to complement Flash working flow.
The framework was inspired by Flixel game engine, but with significant differences in terms of graphics. A key difference (and feature) is the rasterization of vector graphics (*.FLA or *. SWC) on the fly and the possibility to work with raster images and animations instead of normal MovieClips.
Sample
package ru.antkarlov.anthill { import flash.display.Sprite; import flash.events.Event; import flash.display.StageScaleMode; import flash.display.StageAlign; import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.MouseEvent; import flash.events.KeyboardEvent; import flash.utils.getTimer; /** * Ядро игрового движка. * * @langversion ActionScript 3 * @playerversion Flash 9.0.0 * * @author Anton Karlov * @since 29.08.2012 */ public class Anthill extends Sprite { [Embed(source= "resources/iFlash706.ttf",fontFamily="system",mimeType="application/x-font", unicodeRange="U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0400-U+04CE,U+2000-U+206F,U+20A0-U+20CF,U+2100-U+2183")] protected var junk:String; public var state:AntState; protected var _initialState:Class; protected var _framerate:uint; protected var _isCreated:Boolean; protected var _isStarted:Boolean; internal var _elapsed:Number; internal var _total:uint; public function Anthill(aInitialState:Class = null) { super(); _initialState = aInitialState; _framerate = 35; _isCreated = false; _isStarted = false; (stage == null) ? addEventListener(Event.ADDED_TO_STAGE, create) : create(); } public function create(event:Event = null):void { if (event != null) { removeEventListener(Event.ADDED_TO_STAGE, create); } AntG.init(this); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.frameRate = _framerate; stage.addEventListener(KeyboardEvent.KEY_DOWN, AntG.debugger.console.keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_DOWN, AntG.keys.keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, AntG.keys.keyUpHandler); stage.addEventListener(MouseEvent.MOUSE_DOWN, AntG.mouse.mouseDownHandler); stage.addEventListener(MouseEvent.MOUSE_UP, AntG.mouse.mouseUpHandler); stage.addEventListener(MouseEvent.MOUSE_OUT, AntG.mouse.mouseOutHandler); stage.addEventListener(MouseEvent.MOUSE_OVER, AntG.mouse.mouseOverHandler); stage.addEventListener(MouseEvent.MOUSE_WHEEL, AntG.mouse.mouseWheelHandler); AntG.debugger.perfomance.start(); _isCreated = true; switchState(new _initialState()); start(); } public function start():void { if (!_isStarted && _isCreated) { addEventListener(Event.ENTER_FRAME, enterFrameHandler); _isStarted = true; } } public function stop():void { if (_isStarted && _isCreated) { removeEventListener(Event.ENTER_FRAME, enterFrameHandler); _isStarted = false; } } public function switchState(aState:AntState):void { addChild(aState); if (state != null) { state.dispose(); swapChildren(state, aState); removeChild(state); } state = aState; state.create(); } protected function enterFrameHandler(event:Event):void { // РаÑÑчет времени между кадрами. var ct:uint = getTimer(); var ems:uint = ct - _total; AntG.debugger.perfomance.ratingTotal.add(ems); _elapsed = ems / 1000; _total = ct; AntG.elapsed = (_elapsed > AntG.maxElapsed) ? AntG.maxElapsed : _elapsed; AntG.elapsed *= AntG.timeScale; // ПроцеÑÑинг Ñодержимого игры. AntG.updateInput(); AntG.updateSounds(); AntBasic._numOfActive = 0; state.preUpdate(); state.update(); state.postUpdate(); // РаÑчет времени ушедшего на процеÑÑинг. var updCt:uint = getTimer(); AntG.debugger.perfomance.ratingUpdate.add(updCt - ct); // Рендер графичеÑкого контента. AntBasic._numOfVisible = 0; AntBasic._numOnScreen = 0; // Подготовка камер к рендеру. var cam:AntCamera; var n:int = AntG.cameras.length; for (var i:int = 0; i < n; i++) { cam = AntG.cameras[i] as AntCamera; if (cam != null) { cam.draw(); } } // Рендер ÑоÑтоÑниÑ. state.draw(); // РаÑÑчет времени ушедшего на рендер. var rndCt:uint = getTimer(); AntG.debugger.perfomance.ratingRender.add(rndCt - updCt); // РаÑÑчет времени ушедшего на физику. AntG.debugger.perfomance.ratingPhysics.add(getTimer() - rndCt); AntG.debugger.update(); } public function set framerate(value:uint):void { _framerate = value; if (stage != null) { stage.frameRate = _framerate; } } public function get framerate():uint { return _framerate; } } }
RT @as3gamegears: New: Anthill (tiny framework focused on game development) http://t.co/gWkTZ6yZ #as3 #flash #gamedev