首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Actionscript 3中的场景

Actionscript 3中的场景
EN

Stack Overflow用户
提问于 2014-03-02 23:11:19
回答 1查看 292关注 0票数 0

有没有一种方法可以在AS3中设置场景,而无需使用Flash?基本上,当有人点击一个按钮,我想呈现一个完全不同的屏幕。现在,如果我试图绘制一个位图,位图开始于按钮的左上角,而不是程序显示的左上角。

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

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-02 23:47:28

您必须创建表示场景的类的集合。这也涉及到某种类型的基础来运行您的场景之上,管理加载和卸载这些场景及其内容。

在一个简单的场景中,这将从以下几个方面开始:

代码语言:javascript
复制
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类:

代码语言:javascript
复制
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; }
}

使用like (假设您有一个类MainMenuScene扩展Scene):

代码语言:javascript
复制
var sceneManager:SceneManager = new SceneManager();
addChild(sceneManager);

sceneManager.loadScene( new MainMenuScene() );
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22134966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档