Flash game creation tutorial – part 5.2

March 14th update: part 5.3 released.

Now we will discuss about code optimization (the boring – but very important – part) and some visual tricks to make the game look better, and some more issues.

Code optimization

In tutorials 1 to 5.1, I always include the ball actionscript in the ball object. This is correct, but it might create confusion when you have to deal with a lot of objects.

You just can’t remember where did you put that piece of code. Imagine to pick up a game coded in this way after some weeks… would you really remember where did you put that collision script?

So, we will learn how to put all the code in a single frame.

Example 1: the ball

This is the same movie seen in the “No walls and speed limit” example covered in tutorial 5.1.

This time, as said, there is no actionscript in the objects, just the main script in frame 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
_root.attachMovie("hero", "hero_on_stage", 10000, {_x:200,_y:20});
power = 0.65;
yspeed = 0;
xspeed = 0;
wind = 0.00;
gravity = 0.1;
upconstant = 0.75;
friction = 0.99;
hero_on_stage.onEnterFrame = function() {
	if (Key.isDown(Key.LEFT)) {
		xspeed = xspeed-power;
	}
	if (Key.isDown(Key.RIGHT)) {
		xspeed = xspeed+power;
	}
	if (Key.isDown(Key.UP)) {
		yspeed = yspeed-power*upconstant;
	}
	if (Key.isDown(Key.DOWN)) {
		yspeed = yspeed+power*upconstant;
	}
	xspeed = (xspeed+wind)*friction;
	yspeed = yspeed+gravity;
	if (xspeed>15) {
		xspeed = 15;
	}
	if (xspeed<-15) {
		xspeed = -15;
	}
	if (this.yspeed>15) {
		this.yspeed = 15;
	}
	if (yspeed<-15) {
		yspeed = -15;
	}
	this._y += yspeed;
	this._x += xspeed;
	if (this._x<0) {
		this._x += 500;
	}
	if (this._y<0) {
		this._y += 350;
	}
	if (this._y>350) {
		this._y -= 350;
	}
	if (this._x>500) {
		this._x -= 500;
	}
	this._rotation = this._rotation+xspeed;
};

Let’s see the script:

Line 1: I attach the movie “hero” (the ball) on the stage and call it as “hero_on_stage” (this will be the instance name). The 10000 is the depth of the movie. An object with a higher depth than another will appear “in front” of it. Just imagine that an object with an higher depth is on an higher layer. The {_x:200,_y:20} means that the _x value is set to 200 and the _y to 20. Basically, this line acts like I took the hero from the library panel, instanced as “hero_on_stage” and position it to 200,20

Lines 2-8: Here I put the declarations previously included in the onClipEvent (load)

Line 9: The main loop previously called onClipEvent (enterFrame) now is called in this way.

The other lines work in the same way as in the previous example. Just notice that all attributes like _x, _y, _rotation are defined using this._x, this._y, this._rotation…

Example 2: The scrolling

To optimize the scrolling example seen in tutorial 5.1 we are using the same technique: one single actionscript in the first frame.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
_root.attachMovie("kira", "kira", 8000, {_x:234, _y:159});
_root.attachMovie("wall", "wall", 10000, {_x:240, _y:0, _width:5700, _height:5700});
yspeed = 0;
xspeed = 0;
wind = 0.00;
power = 0.65;
gravity = 0.1;
upconstant = 0.75;
friction = 0.99;
kira.onEnterFrame = function() {
	if (Key.isDown(Key.LEFT)) {
		xspeed = xspeed-power;
	}
	if (Key.isDown(Key.RIGHT)) {
		xspeed = xspeed+power;
	}
	if (Key.isDown(Key.UP)) {
		yspeed = yspeed-power*upconstant;
	}
	if (Key.isDown(Key.DOWN)) {
		yspeed = yspeed+power*upconstant;
	}
	xspeed = (xspeed+wind)*friction;
	yspeed = yspeed+gravity;
	if (xspeed>0) {
		this.kira.gotoAndStop(1);
	} else {
		this.kira.gotoAndStop(2);
	}
	_root.wall._y -= yspeed;
	_root.wall._x -= xspeed;
	if (_root.wall.hitTest(this._x, this._y, true)) {
		xspeed = 0;
		yspeed = 0;
		_root.wall._x = 240;
		_root.wall._y = 0;
	}
};

The theory is the same of the previous example, just notice lines 25-29 that makes the player (kira) face left if she is going to the left, and right if she is going to the right. How can I did it? Simply inserting two frames in the kira object, one with kira facing left, one with kira facing right.

And that’s where the boring part ends.

Now…

Eye Candy 1: Trails

Even if you may think a flash game can be funny even with simple graphics, you should improve the visual appeal as much as you can. Let’s see some tricks.

We will have our ball leaving a trail when it moves. In a very simple way.

First, you need to create a new movieclip with a shape on it, then you have to create another new movieclip with the previously created movieclip in it.

This way:

(never mind if you should find it a bit unclear, you will find all source codes at the end of the tutorial)

1: The shape itself: a red circle with a blue border

2: The movieclip where we draw the shape

3: Another movieclip, with the movieclip seen at 2 inside of it

4: Look how I instanced the movieclips

And now the actionscript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
_root.attachMovie("hero", "hero_on_stage", 10000,{_x:200,_y:20});
_root.attachMovie("trail_sprite", "trail_mc", 8000);
trailbitmap = new flash.display.BitmapData(500, 350, true,0x000000);
_root.createEmptyMovieClip("trail", 1);
trail.attachBitmap(trailbitmap, 0);
trail_mc._visible = false;
power = 0.65;
yspeed = 0;
xspeed = 0;
wind = 0.00;
gravity = 0.1;
upconstant = 0.75;
friction = 0.99;
 
hero_on_stage.onEnterFrame = function() {
	if (Key.isDown(Key.LEFT)) {
		xspeed = xspeed-power;
	}
	if (Key.isDown(Key.RIGHT)) {
		xspeed = xspeed+power;
	}
	if (Key.isDown(Key.UP)) {
		yspeed = yspeed-power*upconstant;
	}
	if (Key.isDown(Key.DOWN)) {
		yspeed = yspeed+power*upconstant;
	}
	xspeed = (xspeed+wind)*friction;
	yspeed = yspeed+gravity;
	if (xspeed>15) {
		xspeed = 15;
	}
	if (xspeed<-15) {
		xspeed = -15;
	}
	if (yspeed>15) {
		yspeed = 15;
	}
	if (yspeed<-15) {
		yspeed = -15;
	}
	this._y += yspeed;
	this._x += xspeed;
	if (this._x<0) {
		this._x += 500;
	}
	if (this._y<0) {
		this._y += 350;
	}
	if (this._y>350) {
		this._y -= 350;
	}
	if (this._x>500) {
		this._x -= 500;
	}
	this._rotation = this._rotation+xspeed;
	_root.trail_mc.trail_sprite._x = this._x;
	_root.trail_mc.trail_sprite._y = this._y;
	_root.trailbitmap.draw(_root.trail_mc);
	trail_rectangle = new flash.geom.Rectangle(0, 0, 500, 350);
	trail_blur = new flash.filters.BlurFilter(2, 2, 3);
	_root.trailbitmap.applyFilter(_root.trailbitmap, trail_rectangle, new Point(0, 0), trail_blur);
};

Line 2: I attach the trail_sprite object (the one containing the movieclip with the shape) on a depth lesser than the hero’s one (it will be behind the ball)

Line 3: I create a new BitmapData object called trailbitmap.

What is a BitmapData?

From macromedia livedocs: The BitmapData class lets you create arbitrarily sized transparent or opaque bitmap images and manipulate them in various ways at runtime. This class lets you separate bitmap rendering operations from the Flash Player internal display updating routines. By manipulating a BitmapData object directly, you can create very complex images without incurring the per-frame overhead of constantly redrawing the content from vector data.

Basically, the bitmap data is a “field” where we can apply various visual effects.

It is declared in this way:

BitmapData(width:Number, height:Number, [transparent:Boolean], [fillColor:Number])

So my BitmapData has a width of 500 (same of the movie), height of 350 (same of the movie), and it’s transparent. The fourth parameter, the fillcolor, is not so important since it’s transparent.

Line 4: I create an empty movieclip (a new one) called “trail” at depth 1 (behind the other ones)

Line 5: In this trail movieclip I attach the BitmapData previously created

Line 6: I set the trail_mc clip to invisible. I mean I do not want to see the trail_mc clip, I only want to see its effects on the BitmapData

The other lines are the same seen in previous examples until…

Lines 57-58: I set the _x and _y of the trail_sprite movieclip inside the trail_mc movieclip to the same values of hero’s _x and _y. I mean that I am moving the shape movieclip inside the trail_mc movieclip that is the one containing the movieclip with the shape. Don’t worry if you think you can’t understand it… we will discuss about it in other tutorials.

Line 59: I draw the trail_mc movieclip (with its inner movieclip updated) inside the BitmapData object

Line 60: I define a rectangle starting at (0,0) with width = 500 and height = 350. This is the rectangle where we are going to create the special effect.

Line 61: Defining a blur filter. This filter has 3 parameters: The amount of horizontal blur (set to 2, I noticed it works better with multiples of 2), the amount of vertical blur (same thing) and the number of times to perform the blur (when it’is set to 1, the result is a softly unfocused look, when it’s set to 3, it approximates a Gaussian blur filter)

Line 62: The effect is applyed. It’s easier than it may seem, I am considering about creating a complete tutorial about it anyway.

Eye Candy 2: Explosions

If in the previous example we had a trail, in this one we will consider an explosion.

Let’s apply the same theory to the tunnel game:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
_root.attachMovie("kira", "kira", 8000, {_x:234, _y:159});
_root.attachMovie("wall", "wall", 10000, {_x:240, _y:0, _width:5700, _height:5700});
_root.attachMovie("trail_sprite", "trail_mc", 4000);
trailbitmap = new flash.display.BitmapData(500, 350, true, 0x000000);
_root.createEmptyMovieClip("trail", 1);
trail.attachBitmap(trailbitmap, 0);
trail_mc._visible = false;
yspeed = 0;
xspeed = 0;
wind = 0.00;
power = 0.65;
gravity = 0.1;
upconstant = 0.75;
friction = 0.99;
die = 0;
kira.onEnterFrame = function() {
	if (Key.isDown(Key.LEFT)) {
		xspeed = xspeed-power;
	}
	if (Key.isDown(Key.RIGHT)) {
		xspeed = xspeed+power;
	}
	if (Key.isDown(Key.UP)) {
		yspeed = yspeed-power*upconstant;
	}
	if (Key.isDown(Key.DOWN)) {
		yspeed = yspeed+power*upconstant;
	}
	if (!die) {
		xspeed = (xspeed+wind)*friction;
		yspeed = yspeed+gravity;
	}
	if (xspeed>0) {
		this.kira.gotoAndStop(1);
	} else {
		this.kira.gotoAndStop(2);
	}
	_root.wall._y -= yspeed;
	_root.wall._x -= xspeed;
	if (_root.wall.hitTest(this._x, this._y, true)) {
		if (die<100) {
			xspeed = 0;
			yspeed = 0;
			_root.trail_mc.explosion._x = this._x;
			_root.trail_mc.explosion._y = this._y;
			_root.trail_mc.explosion.gotoAndPlay(die*2+1);
			this._alpha = 0;
			_root.trailbitmap.draw(_root.trail_mc);
			trail_rectangle = new flash.geom.Rectangle(0, 0, 500, 350);
			trail_blur = new flash.filters.BlurFilter(2, 2, 3);
			_root.trailbitmap.applyFilter(_root.trailbitmap, trail_rectangle, new Point(0, 0), trail_blur);
			die+=0.5;
		} else {
			die = 0;
			xspeed = 0;
			yspeed = 0;
			this._alpha = 100;
			_root.wall._x = 240;
			_root.wall._y = 0;
		}
	}
};

Line 15: A new variable called die. It will states if the player… died…

Lines 29-32: xspeed and yspeed are updated only if the player didn’t die.

Line 41: Things to do if the player hit the wall and die < 100

Line 46: Tell the explosion movieclip (the “trail_sprite” in the previous example) to goto and play frame die*2+1. Now we have no more a shape but an explosion movieclip to be blurred

Line 47: Set the player alpha to 0 (to “remove” the bubble from stage)

Line 52: Increment die by 0.5. In this way we will remain inside this loop until die < 100... 200 frames or so.

Lines 52-60: Things to do if die >=100 (the player died some frames ago): set the _alpha to 100 (return visible), set die to 0 again and reset wall _x and _y and speed.

Now that some visual effects are done, it’s time to…

Adding sound

In this example we want to add a sound effect to our explosion.

First, you must import the sound in the library and instance it. When you have a linkage, the actionscript is very simple:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
_root.attachMovie("kira", "kira", 8000, {_x:234, _y:159});
_root.attachMovie("wall", "wall", 10000, {_x:240, _y:0, _width:5700, _height:5700});
_root.attachMovie("trail_sprite", "trail_mc", 4000);
trailbitmap = new flash.display.BitmapData(500, 350, true, 0x000000);
_root.createEmptyMovieClip("trail", 1);
trail.attachBitmap(trailbitmap, 0);
trail_mc._visible = false;
exp_sound = new Sound();
exp_sound.attachSound("boom");
yspeed = 0;
xspeed = 0;
wind = 0.00;
power = 0.65;
gravity = 0.1;
upconstant = 0.75;
friction = 0.99;
die = 0;
kira.onEnterFrame = function() {
	if (Key.isDown(Key.LEFT)) {
		xspeed = xspeed-power;
	}
	if (Key.isDown(Key.RIGHT)) {
		xspeed = xspeed+power;
	}
	if (Key.isDown(Key.UP)) {
		yspeed = yspeed-power*upconstant;
	}
	if (Key.isDown(Key.DOWN)) {
		yspeed = yspeed+power*upconstant;
	}
	if (!die) {
		xspeed = (xspeed+wind)*friction;
		yspeed = yspeed+gravity;
	}
	if (xspeed>0) {
		this.kira.gotoAndStop(1);
	} else {
		this.kira.gotoAndStop(2);
	}
	_root.wall._y -= yspeed;
	_root.wall._x -= xspeed;
	if (_root.wall.hitTest(this._x, this._y, true)) {
		if (!die) {
			exp_sound.start();
		}
		if (die<100) {
			xspeed = 0;
			yspeed = 0;
			_root.trail_mc.explosion._x = this._x;
			_root.trail_mc.explosion._y = this._y;
			_root.trail_mc.explosion.gotoAndPlay(die*2+1);
			this._alpha = 0;
			_root.trailbitmap.draw(_root.trail_mc);
			trail_rectangle = new flash.geom.Rectangle(0, 0, 500, 350);
			trail_blur = new flash.filters.BlurFilter(2, 2, 3);
			_root.trailbitmap.applyFilter(_root.trailbitmap, trail_rectangle, new Point(0, 0), trail_blur);
			die += 0.5;
		} else {
			die = 0;
			xspeed = 0;
			yspeed = 0;
			this._alpha = 100;
			_root.wall._x = 240;
			_root.wall._y = 0;
		}
	}
};

Line 8: Defines a variable (exp_sound) for a new sound

Line 9: Attaching the sound. In this case, boom is the linkage name of the sound

Lines 43-45: When the collision is checked and die is equal to 0 (it’s the first frame where we are checking the collision), play the sound.

Now download the source code of all examples, give me feedback and proceed to part 5.3

Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (31 votes, average: 4.87 out of 5)
Loading ... Loading ...
If you found this post useful, please consider a small donation.
» Flash Templates provided by Template Monster are pre-made web design products developed using Flash technology.
They can be easily customized to meet the unique requirements of your project.

40 Responses to “Flash game creation tutorial – part 5.2”

  1. sambondashus on March 3rd, 2007 4:41 pm

    awsome, but how do you get something in the bacground to stay where it is to lead to another frame when you hit it without being part of the wall and reseting your spot

  2. Alex on March 3rd, 2007 7:18 pm

    I LOVE IT

  3. Nic C on March 3rd, 2007 7:55 pm

    Sweet Man. Your tutorials rock. Keep them coming. What do you do for a living?

  4. Mike on March 4th, 2007 12:43 am

    I’ve learned a lot from your tuts, and it’s good to see that you are still updating this one and not focusing all your efforts on the line rider one….good job =)

  5. abhilash on March 4th, 2007 11:08 am

    nice tutorial only one suggestion
    u should cover more things in a tutorial

  6. ahmad on March 16th, 2007 5:44 am

    thank, it helps me very much

  7. gary on March 21st, 2007 3:12 am

    Excellent job! Thank you for the very helpful tutorial. I’m looking at Flash for our games and educational tools for kids with disabilities. Your game examples are great. I appreciate the effort you put into putting this together.

  8. Charles on May 24th, 2007 2:33 pm

    Brilliant tutorial!
    I’m going to try and make a game now…wish me luck!

  9. Amir on June 30th, 2007 11:17 pm

    i really dont know how to thank you for all what you did for us(beginners).. i think, the best way is to make something based on your tutorial and send it to you..
    thank you

  10. BoJaN on July 20th, 2007 6:34 am

    ok… i tried the 1 script thing in the root frame but it wont put my hero onto the screen, i even tried an exact copy/paste and it still didnt work. My hero is named “hero” in the library.

  11. Dragolux on August 7th, 2007 4:14 am

    Wow! Your tutorials are AWESOME!! Keep ‘em coming!

  12. AwesomeRific on August 15th, 2007 1:32 pm

    Hey man, how can I change the walls? Well what I really mean is, I’ve changed the walls but not the code doesn’t work… What am I suppose to do?

    I eventually after a while got the

  13. jimbob on October 27th, 2007 2:07 pm

    can some1 tell me how to play a sound when mouse is clicked??? iv got the sound and linkage it and all that but i need code

  14. Gino Zappia on November 5th, 2007 11:28 pm

    I have a question. How would you attach the trail to the hero clip instead of the explosion? I can attach the trail clip, but I cannot figure out how to make the trail extend from the hero clip.

    See actionscript here:

    _root.attachMovie(”kira”, “kira”, 8000, {_x:234, _y:159});
    _root.attachMovie(”wall”, “wall”, 10000, {_x:240, _y:0, _width:5700, _height:5700});
    _root.attachMovie(”trail_sprite”, “trail_mc”, 4000);
    trailbitmap = new flash.display.BitmapData(500, 350, true, 0×000000);
    _root.createEmptyMovieClip(”trail”, 1);
    trail.attachBitmap(trailbitmap, 0);
    trail_mc._visible = false;
    yspeed = 0;
    xspeed = 0;
    wind = 0.00;
    power = 0.65;
    gravity = 0.1;
    upconstant = 0.75;
    friction = 0.99;
    kira.onEnterFrame = function() {
    if (Key.isDown(Key.LEFT)) {
    xspeed = xspeed-power;
    }
    if (Key.isDown(Key.RIGHT)) {
    xspeed = xspeed+power;
    }
    if (Key.isDown(Key.UP)) {
    yspeed = yspeed-power*upconstant;
    }
    if (Key.isDown(Key.DOWN)) {
    yspeed = yspeed+power*upconstant;
    }
    xspeed = (xspeed+wind)*friction;
    yspeed = yspeed+gravity;
    if (xspeed>0) {
    this.kira.gotoAndStop(1);
    } else {
    this.kira.gotoAndStop(2);
    }
    _root.wall._y -= yspeed;
    _root.wall._x -= xspeed;
    if (_root.wall.hitTest(this._x, this._y, true)) {
    xspeed = 0;
    yspeed = 0;
    _root.wall._x = 240;
    _root.wall._y = 0;
    }
    this._rotation = this._rotation+xspeed;
    _root.trail_mc.trail_sprite._x = this._x;
    _root.trail_mc.trail_sprite._y = this._y;
    _root.trailbitmap.draw(_root.trail_mc);
    trail_rectangle = new flash.geom.Rectangle(0, 0, 500, 350);
    trail_blur = new flash.filters.BlurFilter(2, 2, 3);
    _root.trailbitmap.applyFilter(_root.trailbitmap, trail_rectangle, new Point(0, 0), trail_blur);
    };

  15. B on November 26th, 2007 11:03 pm

    Do you have any examples that include both a score and a maze? I am making a game that includes both and it is insisting on putting the score behind the maze so you cannot see it most of the time. I cannot attach the score as a movie, then give it a higher lever number, because then it does not know what the score is. thanks

  16. Andvari on January 21st, 2008 12:35 am

    Hello Emanuele, I really love your tutorials you’ve been an inspiration to start coding flash games.

    I just have a little question for you. I can’t get the “Trails eyecandy” part to work. My question is: how do i make the “trail_shape” MC to be INSIDE the “trail_sprite” MC?

    Thanks in advance!

  17. Tim wilson on January 28th, 2008 5:41 am

    just awsome so simple but efective you should be a teacher, most flash tutorials are so boring just reading a huge wall of text but you have fun examples evry step of the way.

    never stop making these

  18. Umer on February 22nd, 2008 5:37 pm

    good

  19. The Erik on April 29th, 2008 11:47 am

    this is excellent! :)

  20. Ola on May 5th, 2008 3:36 pm

    Hi!
    How can I make that when energy is 0, game moves to frame 2, where is text “Game Over” and button “start again”.

    I tried this, but it didnt work:

    if (energy==0) {
    gotoAndStop(2);
    }

  21. Gino Zappia on June 4th, 2008 8:59 pm

    I came to check in on my question six months later. Sad to see no response. :(

  22. n on July 20th, 2008 5:02 pm

    very good

  23. 'sdflf'akdlfkl on August 5th, 2008 3:23 pm

    When you die, you can still move the maze around the explosion, and it will pause the animation until you hit a wall again.

  24. E200 on November 20th, 2008 6:26 am

    It’s great, socurcecode works fine.
    But, when i create a new file, it doesn’t work.
    It seems _root.attachMovie(”hero”, “hero_on_stage”, 10000, {_x:200,_y:20});
    not get executed. anybody help

  25. uno on February 20th, 2009 1:44 pm

    E200 you need to check “Export for ActionScript” in the hero symbol properties

  26. Yuval on March 22nd, 2009 4:31 pm

    in the last examples u can play with the explosion and as long you’re away from the corner it continue

  27. Tommy on May 30th, 2009 5:38 am

    ’sdflf’akdlfkl was my nickname for 2008.

    I came back to my post 9 months later. Sad to see no response… :(

  28. Sinan on October 20th, 2009 3:16 pm

    Hey there. Thanks for the fantastic tutorials.

    I have one suggestion. I don’t know if anyone else stated before but, you are putting multiple swf files showing your steps on the pages. But each one of them starts as the page loads. Some of them constantly makes sounds like the one with the explosion on this page. Or multiple running swf’s may degrade the performance on some computers.

    Do you plan to put a “switch” to “run” the animation? It would be a nice feature, allowing us to fully enjoy your tutorials.

    Cheers,

    Sinan

  29. Crescent on December 20th, 2009 10:59 pm

    There is a glitch you are still able to fly after you die and this can allow you to survive about 3 deaths

  30. zard on January 24th, 2010 1:53 am

    you can move with the explosion and continue alive

Leave a Reply




Trackbacks

  1. Flash game creation tutorial - part 1 at Emanuele Feronato on March 3rd, 2007 3:26 pm

    [...] March 3rd update: part 5.2 released. February 9th update: part 5.1 released. December 31st update: 5th part released. December 23rd update: 4th part released. December 6th update: 3rd part released. November 18th update: 2nd part released. [...]

  2. Flash game creation tutorial - part 2 at Emanuele Feronato on March 3rd, 2007 3:27 pm

    [...] March 3rd update: part 5.2 released. February 9th update: part 5.1 released. December 31st update: 5th part released. December 23rd update: 4th part released. December 6th update: 3rd part released. [...]

  3. Flash game creation tutorial - part 3 at Emanuele Feronato on March 3rd, 2007 3:27 pm

    [...] March 3rd update: part 5.2 released. February 9th update: part 5.1 released. December 31st update: 5th part released. December 23rd update: 4th part released. [...]

  4. Flash game creation tutorial - part 4 at Emanuele Feronato on March 3rd, 2007 3:28 pm

    [...] March 3rd update: part 5.2 released. February 9th update: part 5.1 released. December 31st update: 5th part released. [...]

  5. Flash game creation tutorial - part 5 at Emanuele Feronato on March 3rd, 2007 3:29 pm

    [...] March 3rd update: part 5.2 released. February 9th update: part 5.1 released. [...]

  6. Flash game creation tutorial - part 5.1 at Emanuele Feronato on March 3rd, 2007 3:30 pm

    [...] March 3rd update: part 5.2 released. [...]

  7. » Blog Archive » Colección de Vínculos Flex on March 3rd, 2007 4:32 pm

    [...] Tutorial de cómo crear juegos basados en Flash Lo único que dijo, pon el volumen de los altavoces bien bajo. [...]

  8. Flash game creation tutorial - part 5.3 at Emanuele Feronato on March 14th, 2007 4:27 pm

    [...] Read tutorials from 1 to 5.2 if you haven’t done it already and follow me in the game creation. [...]

  9. Using hotoshop to draw levels for Flash games at Emanuele Feronato on May 31st, 2007 5:45 pm

    [...] And these are the experiments. The “engine” of the “game” is the same as explained in this tutorial [...]

  10. Create a Flash ball game with visual from above tutorial at Emanuele Feronato on June 14th, 2007 12:52 pm

    [...] To have a scrollable background, the ball must remail fixed in the center of the stage, and the level must move, like in this tutorial. [...]

flash games company