2014-03-02 3 views
0

플래시 도구를 사용하지 않고 AS3에서 장면을 설정하는 방법이 있습니까? 기본적으로 누군가가 버튼을 클릭하면 전혀 다른 화면을 보여주고 싶습니다. 지금 비트 맵을 그릴 때 비트 맵은 프로그램 디스플레이의 왼쪽 위 모퉁이가 아니라 단추의 왼쪽 위 모서리에서 시작됩니다.액션 스크립트 3의 장면

이것은 플래시를 사용하면 간단합니다. gotoAndPlay (1, scenename) 만 사용하면됩니다. 그러나이 프로그램이 플래시를 사용하지 않고 AS3에 완전히 들어가기를 바랍니다.

제안 사항?

+1

요 수 http://www.senocular.com/flash/tutorials/faq/#gotoscene – user3373217

답변

3

장면을 나타내는 클래스 모음을 직접 만들어야합니다. 이것은 또한 장면을 ontop로 실행하고, 그 장면과 내용을로드 및 언로드하는 것을 관리하는 기초 유형을 포함합니다. Scene 클래스와

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; } 
} 

:처럼 사용

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; } 
} 

(당신이 MainMenuSceneScene를 확장하는 클래스를 가지고 가정) 간단한 시나리오에서

,이의 라인을 따라 뭔가로 시작될 것입니다 :

var sceneManager:SceneManager = new SceneManager(); 
addChild(sceneManager); 

sceneManager.loadScene(new MainMenuScene()); 
+0

고마워, 내가 한 번해볼 게. – TomJeffries

관련 문제