Skip to content

Instantly share code, notes, and snippets.

View alamboley's full-sized avatar

Aymeric Lamboley alamboley

View GitHub Profile
alamboley / gist:4022129
Last active October 12, 2015 11:47
How to grab and drag physics objects (Citrus Engine recipe)
View gist:4022129
// In a state class :
//Here we use Box2D. /!\ Don't forget that your _hero must have its touchable property set to true!
var draggableHeroArt:DisplayObject = view.getArt(_hero) as DisplayObject;
draggableHeroArt.addEventListener(MouseEvent.MOUSE_DOWN, _handleGrab);
stage.addEventListener(MouseEvent.MOUSE_UP, _handleRelease);
private function _handleGrab(mEvt:MouseEvent):void {
alamboley / gist:4022031
Created November 6, 2012 01:59
How to destroy objects (Citrus Engine recipe)
View gist:4022031
// Inside a class which extends CitrusObject e.g. CitrusSprite, APhysicsObjects...
kill = true;
// If you have an access to the variable of the object :
hero.kill = true;
// Or within a State class (the previous code works too) :
alamboley / gist:4022014
Last active October 12, 2015 11:48
How to access game's graphics (Citrus Engine recipe)
View gist:4022014
// Citrus object's view management is powerful: when a view is added to the object it is loaded and added to a template
// called SpriteArt which is a container of your art. This template allows to load external files thanks to their path.
// It works the same way with Starling.
var _hero:Hero = new Hero("my hero", {view:"myHero.swf"});
// _hero.view refers to the path "myHero.swf" not to the swf loaded.
// If the view specified is a DisplayObject, you can directly make whatever you want on it (filter, blendMode, ect).
var _heroGraphic:SpriteArt = view.getArt(_hero) as SpriteArt;
// _heroGraphic is the container of the art. It will loads and display the art. Most often you will work with this.
alamboley / gist:4022051
Last active October 12, 2015 11:48
How to handle mouse events (Citrus Engine recipe)
View gist:4022051
var coin:Coin = new Coin("coin", {view:"art.png", touchable:true});
//Within your state class. Same process for Starling or Away3D
var coinArt:DisplayObject = view.getArt(coin) as DisplayObject;
coinArt.addEventListener(MouseEvent.CLICK, handleCoinClick);
private function handleCoinClick(e:MouseEvent):void
var clickedCoin:Coin = view.getObjectFromArt(e.currentTarget) as Coin;
alamboley / gist:4022074
Created November 6, 2012 02:05
How to specify the view (Citrus Engine recipe)
View gist:4022074
// If you want to use Blitting view instead of the SpriteView override this method in your State class :
//Make sure and call this override to specify Blitting mode.
override protected function createView():CitrusView {
return new BlittingView(this);
//Using Starling or Away3D you don't need to override the view since it uses StarlingState/Away3D which already specify StarlingView/Away3DView.
//Don't forget that your Main class should extend StarlingCitrusEngine or Away3DCitrusEngine.
alamboley / gist:4024051
Created November 6, 2012 11:06
How to add commands to the console (Citrus Engine recipe)
View gist:4024051
//In the Main class add this command. It will pause and unpause the game :
this.console.addCommand("pause", pauseGame);
private function pauseGame():void {
this.playing = !this.playing;
//Using parameters :
this.console.addCommand("goto", goto);
alamboley / gist:4024068
Last active October 12, 2015 12:07
How to play sounds (Citrus Engine recipe)
View gist:4024068
// In the Main class, register the sounds :
sound.addSound("Hurt", {sound:"sounds/hurt.mp3"});
sound.addSound("Collect", {sound:"sounds/collect.mp3"});
sound.addSound("Song", {sound:"sounds/song.mp3",timesToPlay:-1});
// In your GameState play them when needed :
private function handleHeroTakeDamage():void {
alamboley / gist:4024296
Last active October 12, 2015 12:07
How to set up a camera (Citrus Engine recipe)
View gist:4024296
// In a GameState, the parameters are the object to follow, the offset, the bounds and the easing., new Point(stage.stageWidth / 2, stage.stageHeight / 2), new Rectangle(0, 0, 1550, 450), new Point(.25, .05));
// You can add more interactivity :
stage.addEventListener(MouseEvent.MOUSE_WHEEL, _mouseWheel);
CitrusEngine.getInstance().input.keyboard.addKeyAction("rotate", Keyboard.X);
private function _mouseWheel(mEvt:MouseEvent):void {
if ( > 0)
alamboley / gist:4024623
Last active October 12, 2015 12:08
How to make a preloader (Citrus Engine recipe)
View gist:4024623
// Arts specified by a path to a file like "levels/coin.png" are loaded under the hood by the Citrus Engine.
//You can follow the progression in your GameState :
//add a mask to the game to hide objects loading in the background
_maskDuringLoading = new Quad(stage.stageWidth, stage.stageHeight);
// create a textfield to show the loading %
_percentTF = new TextField(400, 200, "", "ArialMT");
alamboley / gist:4030440
Created November 7, 2012 09:44
How to change or destroy State (Citrus Engine recipe)
View gist:4030440
// In the Main class :
public function Main() {
state = new TiledMapGameState();
setTimeout(otherState, 4000);
private function otherState():void {