Starting the basic template
Go to "Project -> New Project" and choose an “AS3 Project”.
Browse to the games folder and go to src subfolder:
Extract the flixel engine there, which is in the "org" folder.
Now, put this code on the Main.as:
package
{
/**
* ...
* @author pisces_eyes
*/
import org.flixel.*;
import com.game.MenuState;
[SWF(width = "640", height = "480", backgroundColor = "#000000")]
[Frame(factoryClass="Preloader")]
public class Main extends FlxGame
{
public function Main():void
{
super(640, 480, MenuState, 1);
}
}
}Put this code on Preloader.as:
package
{
/**
* ...
* @author pisces_eyes
*/
import org.flixel.FlxPreloader;
public class Preloader extends FlxPreloader
{
public function Preloader()
{
className = "Main";
super();
}
}
}Create a new folder inside the same "src" folder named "com\game".
Under the com\game folder, create 2 new files:"MenuState.as and PlayState.as":
MenuState.as:
package com.game
{
/**
* ...
* @author pisces_eyes
*/
import flash.ui.Mouse;
import org.flixel.*;
public class MenuState extends FlxState
{
override public function create():void
{
var txt:FlxText
txt = new FlxText(0, (FlxG.height / 2) - 32, FlxG.width, "Flixel Empty Game\n(MenuState)")
txt.setFormat(null,32,0xFFFFFFFF,"center")
this.add(txt);
txt = new FlxText(0, FlxG.height - 32, FlxG.width, "CLICK OR PRESS X TO START")
txt.setFormat(null, 16, 0xFFFFFFFF, "center");
this.add(txt);
}
override public function update():void
{
if (FlxG.keys.pressed("X") || FlxG.mouse.justPressed())
{
FlxG.flash.start(0xffffffff, 0.75);
FlxG.fade.start(0xff000000, 1, onFade);
}
Mouse.show();
super.update();
}
private function onFade():void
{
FlxG.state = new PlayState();
}
}
}PlayState.as:
package com.game
{
/**
* ...
* @author pisces_eyes
*/
import flash.ui.Mouse;
import org.flixel.*;
public class PlayState extends FlxState
{
override public function create():void
{
var txt:FlxText
txt = new FlxText(0, (FlxG.height / 2) - 32, FlxG.width, "(PlayState)")
txt.setFormat(null,32,0xFFFFFFFF,"center")
this.add(txt);
}
override public function update():void
{
super.update();
Mouse.show();
}
}
}Now set Main.as as your startup object and run.
Go back to Introduction
2 comments:
Fantastic post. This has really helped me to set-up my FlashDevelop files to a default template sort of state that I can use for all my work. Cheers!
I think the library has changed since this article was posted. I found the following issues.
1 override public function update():void
2 {
3 if (FlxG.keys.pressed("X") || FlxG.mouse.justPressed())
4 {
5 FlxG.flash.start(0xffffffff, 0.75);
6 FlxG.fade.start(0xff000000, 1, onFade);
7 }
8
9 Mouse.show();
10
11 super.update();
12 }
13
14 private function onFade():void
15 {
16 FlxG.state = new PlayState();
17 }
on line 5 flash is a function, it has no property start, so, remove the .
on line 6 fade ia a function, do the same as above. In this same line onFade is a callback and is a method of this class, change it to this.onFade, if the game does not change states.
on line 16 state is a read-only property, so in order for the code to work replace this line with Flx.switchState(new PlayState());
That's it...
Post a Comment