Do you like my tutorials?

Then consider supporting me on Ko-fi

Talking about Circle Chain game, Actionscript 3, Flash and Game development.

Do you know Starling? It’s an open source game engine for Flash which takes advantage of new Flash Player 11 Stage3D feature.

Despite its name, Stage3D can also be used for 2D projects, so I am making another port of the Circle Chain engine using Starling.

I would suggest you to use Flash Builder 4.6 because it publishes for Flash Player 11 with no workarounds. You can download a free trial at this link.

The creation of a Flash Builder Starling project is very easy: first, start a new ActionScript project

Then, once you defined your project name and path, don’t click on “Finish” but on “Next”…

… and in the “Source path” tab specify the path to starling\src folder inside your Starling folder.

Then, everything is very easy: you create a Starling instance:

package{
	import flash.display.Sprite;
	import starling.core.Starling;
	
	[SWF(width="500", height="500", frameRate="60", backgroundColor="#000000")]
	public class Main extends Sprite{
		private var starling:Starling;
		public function Main(){
			starling = new Starling(Game, stage);
			starling.start();
		}
	}
}

and Game.as is:

package{
	import starling.display.Image;
	import starling.display.Sprite;
	import starling.events.Event;
	
	public class Game extends Sprite{
		[Embed(source = "background.png")]
		private static const Background:Class;
		
		[Embed(source = "greencircle.png")]
		private static const GreenCircle:Class;
		
		private var greenCircleVector:Vector.=new Vector.();
		private var xSpeedVector:Vector.=new Vector.();
		private var ySpeedVector:Vector.=new Vector.();
		
		public function Game(){
			addEventListener(Event.ADDED_TO_STAGE,setup);
		}
		
		private function setup(e:Event):void{
			var background:Image = Image.fromBitmap(new Background());
			addChild(background);		
			for(var i:uint=0;i<10;i++){
				var greenCircle:Image=Image.fromBitmap(new GreenCircle());
				greenCircle.x=Math.random()*500;
				greenCircle.y=Math.random()*500;
				var randomDirection:Number=Math.random()*2*Math.PI;
				addChild(greenCircle);
				greenCircleVector.push(greenCircle);
				xSpeedVector.push(2*Math.cos(randomDirection));
				ySpeedVector.push(2*Math.sin(randomDirection));
			}	
			stage.addEventListener(Event.ENTER_FRAME, update);
		}
		
		private function update(e:Event):void{
			for(var i:uint=0;i500){
					greenCircleVector[i].x-=500;
				}
				if(greenCircleVector[i].x<0){
					greenCircleVector[i].x+=500;
				}
				if(greenCircleVector[i].y>500){
					greenCircleVector[i].y-=500;
				}
				if(greenCircleVector[i].y<0){
					greenCircleVector[i].y+=500;
				}
			}
		}
	}
}

Notice how included Sprite and Event classes are taken from Starling package rather than Flash default classes.

This is just a quick prototype and it isn't even optimized to run on FP11, so that's all at the moment:

But if you want to know more about Starling, I will be glad to continue until the finished game.

Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.