2014-03-02 6 views
0

Есть ли способ настроить сцены в AS3 без использования инструмента Flash? В основном, когда кто-то нажимает кнопку, я хочу представить совершенно другой экран. Прямо сейчас, если я попытаюсь нарисовать растровое изображение, растровое изображение начинается в верхнем левом углу кнопки, а не в верхнем левом углу экрана программы.Сцены в ActionScript 3

Это легко использовать с помощью Flash, вы просто используете gotoAndPlay (1, scenename). Тем не менее, я хочу, чтобы эта программа была полностью в AS3 без использования Flash.

Предложения?

+1

Лучше избегать сцен, если лет u может http://www.senocular.com/flash/tutorials/faq/#gotoscene – user3373217

ответ

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()); 
+0

Спасибо, я попробую. – TomJeffries

Смежные вопросы