有没有办法在不使用Flash工具的情况下在AS3中设置场景?基本上当有人点击按钮时我想呈现一个完全不同的屏幕。现在,如果我尝试绘制位图,位图将从按钮的左上角开始,而不是在程序显示的左上角。
这很容易使用Flash,你只需使用gotoAndPlay(1,scenename)。但是,我希望这个程序完全在AS3中而不使用Flash。
建议?
答案 0 :(得分:3)
您必须创建自己的表示场景的类集合。这还涉及某种类型的基础,用于在场景上运行场景,管理加载和卸载这些场景及其内容。
在一个简单的场景中,这将从以下内容开始:
class SceneManager extends Sprite
{
private var _currentScene:Scene;
public function loadScene(scene:Scene):void
{
unloadCurrentScene();
_currentScene = scene;
_currentScene.load(this);
addChild(_currentScene.view);
}
public function unloadCurrentScene():void
{
if(hasScene)
{
_currentScene.unload(this);
_currentScene.view.parent === this && removeChild(_currentScene.view);
}
_currentScene = null;
}
public function get currentScene():Scene{ return _currentScene; }
public function get hasScene():Boolean{ return _currentScene !== null; }
}
使用Scene
类:
class Scene
{
private var _view:Sprite;
public function Scene()
{
_view = new Sprite();
}
public function load(sceneManager:SceneManager):void
{
// Abstract.
// Load children, initialize components, etc.
}
public function unload(sceneManager:SceneManager):void
{
// Abstract.
// Remove children, event listeners, references, etc.
}
public function get view():Sprite{ return _view; }
}
使用类似(假设你有一个MainMenuScene
类扩展Scene
):
var sceneManager:SceneManager = new SceneManager();
addChild(sceneManager);
sceneManager.loadScene( new MainMenuScene() );