Actionscript中的场景3

时间:2014-03-02 23:11:19

标签: actionscript-3 flash

有没有办法在不使用Flash工具的情况下在AS3中设置场景?基本上当有人点击按钮时我想呈现一个完全不同的屏幕。现在,如果我尝试绘制位图,位图将从按钮的左上角开始,而不是在程序显示的左上角。

这很容易使用Flash,你只需使用gotoAndPlay(1,scenename)。但是,我希望这个程序完全在AS3中而不使用Flash。

建议?

1 个答案:

答案 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() );