• Advertisement
Sign in to follow this  

Game scenes transition in AS3

This topic is 1979 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello everybody.


I'm making a game in AS3 and, based on googling and your help in this forum, I'll have the game scenes (game, mainmenu, credits, ...) in different MCs.

So, what I want to do is have control over them and make them appear when the user presses a button (already acomplish this)


For example, make a new MC called Intro, as soon as Intro finish, delete it and make MainMenu MC appear; if I click Credits, delete MainMenu and make Credits appear, and so on.

What is the best method to accomplish this??

Thanks so much in advance !!

BTW
One of the codes I find more interesting was this:
http://www.newgrounds.com/bbs/topic/868016#bbspost15599445_post_text

I tried to use it in so many ways but I didn't acomplished my objectives.

Share this post


Link to post
Share on other sites
Advertisement
Quickest way is to addChild() when you want to add the scene to the stage (remember to set the coords!), and removeChild() when you want it gone.

Scenes, therefore, should extend Sprite or MovieClip or so; basically having a huge MC-container for all the stuff in the different scenes. Or what you have is just fine, remember to export for AS3.

Couple tips:[list]
[*]First add the new scene so it's atop of the stage, then remove the old scene. Doing viceversa will make an ugly effect where there's nothing for a second.
[*]The MCs might take time to be added, you might want to control that.
[*]Make sure to make the MC instances point null when you're done with them so the garbage collector can free memory!
[/list]

Another choice is to add all the childs and to have their alpha = 0 unless they are needed. This is quicker for time, but more memory-expensive I think, and besides they have to have a stop button when they're not opaque -- meaning it's not their turn.


I was unaware of your AS3 level so I tried to explain as much as possible.

Share this post


Link to post
Share on other sites
Hey IronyGames, thanks so much for your help.

Before I check very carefuly your suggestions, I want to show you what I did:

[CODE]
package {

import flash.display.MovieClip;
import flash.events.Event;

public class ScenesChange extends MovieClip {

public function ScenesChange() {
//vars
var introScene:IntroScene = new IntroScene;
var menuScene:MenuScene = new MenuScene;
var endIntroScene:Boolean = false;

addEventListener(Event.ENTER_FRAME, checkStates);

function checkStates(event:Event) {
if (introScene.endIntroScene == true) {
addChild(menuScene);
removeChild(introScene);

}
}

addChild(introScene);

}

}

}
[/CODE]

Ok now, I have 2 MCs in the library, one called IntroScene and another called MenuScene. At the end of introScene (instance of IntroScene) I have a flag that tells me endIntroScene = true;

Now when that flag it's true, remove introScene and add menuScene.

Ok with this code, so far so good. But I'm receiving this error/warning: ArgumentError: Error #2025. Even though it runs correctly.

Now I have some Qs:

- (READ EDIT) Can I keep the function ScenesChange running and check when a stage ends? (I think it's better to finish it when it's function it's over, how can I do it?
- I will have many stages in the game (for example a small curtain that appears in each action of the game (press play, credits, ... , during the game when you enter the mission or die, and so on) Can I control it with this flag method?

This is the main problem that drives me crazy ! I'm handling the rest of the game very good.

Thanks so much for your guidance !!

EDIT:
Ok what I did is create a new function inside checkStates and in that new function, create the MenuScene and then removeEventListener the checkStates listener; and so far so good ! That strange Error #2025 is not appearing anymore.

My other Q after all this is to know if I am doing the right thing? Of course I do because it works, but is a good way to do it?!

Thanks guys once again !!!! Edited by JETerán

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement