Страницы

понедельник, 3 декабря 2012 г.

ООП с использованием Starling

Рассмотрим пример ООП кода, где главный герой - кубик, описан в отдельном классе Cube.as

Главный класс запуска игры Main.as:
package
{
    import flash.display.Sprite;
    import starling.core.Starling;
    //Устанавливаем для игры частоту 60, и разрешение 640 на 480, с черным фоном
    [SWF(frameRate="60", width="640", height="480", backgroundColor="0x000000")]
    
    public class Main extends Sprite
    {
        private var _starling:Starling; //Движок
        //--------------------------------------------------------
        public function Main():void
        {
            //запускаем движок, класс Game - вход
            _starling = new Starling(Game, stage);
            _starling.antiAliasing = 1;  //Сглаживание
            _starling.start();
        }
    }
}

Общий класс игры Game.as

package
{
    import starling.display.Sprite; //Уже не flash, а starling
    import starling.events.Event;

    public class Game extends Sprite
    {
        private var objCube:Cube; //Кубик
        
        public function Game()
        {
            super();
            this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
        }

        private function onAddedToStage(e:Event):void
        {
            //Добавляем кубик
            objCube = new Cube; //От класса Cube
            this.addChild(objCube);
            objCube.x = 10;
            objCube.y = 10;
        }
    }
}

Класс кубика Cube.as:

package
{
    import flash.display.Bitmap;
    import starling.core.Starling;  //Ядро движка
    import starling.textures.Texture;  //Текстуры
    import starling.display.Sprite;
    import starling.display.Image;
    import starling.events.Event; //События

    public class Cube extends Sprite
    {
        private var objCube:Image;
        
        public function Cube()
        {
            super();
            this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
        }

        private function onAddedToStage():void
        {
            this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
            //Добавляем кубику текстуру
            objCube = new Image(Assets.getTexture());
            this.addChild(objCube);
        }
    }
}

Класс описания загруженной графики, который возвращает текстуру Assets.as:

package
{
    import flash.display.Bitmap;
    import starling.textures.Texture;

    public class Assets
    {
        //Загружаем картинку
        [Embed(source="../sprites/cube.png")]
        public static const CubeArt:Class;

        public static function getTexture():Texture
        {
            var bitmap:Bitmap = new Assets["CubeArt"];
            var texture:Texture = Texture.fromBitmap(bitmap);
            //Возвращаем текстуру
            return texture;
        }
    }
}


Комментариев нет:

Отправить комментарий