Старлинг не отображает графику

Привет, ребята, я новичок в AS3 и в Starling. У меня проблемы с отображением изображения в другом классе. он отображается в моем классе игрового меню, но я хотел, чтобы он отображался в моем игровом классе.

поэтому я получил 3 класса Main, который запускает скворец, который запускает класс GameMenu.

Пакет "Класс GameMenu" {

import starling.display.BlendMode;
import starling.display.Button;
import starling.display.Image;
import starling.display.Sprite;
import starling.events.Event;

public class GameMenu extends Sprite {

    private var bg:Image;
    private var gameLogo:Image;
    private var playBtn:Button;
    private var rankBtn:Button;
    private var settingBtn:Button;

    private var inGame:PlayGame;


    public function GameMenu ()
    {
        super ();

        this.addEventListener (Event.ADDED_TO_STAGE, onAddedToStage);
    }

    private function onAddedToStage (event:Event):void
    {
        this.removeEventListener (Event.ADDED_TO_STAGE, onAddedToStage);

        drawScreen ();
    }

    private function drawScreen ():void
    {
        bg = new Image(Assets.getAtlas().getTexture(("Background.png")));
        bg.blendMode = BlendMode.NONE;
        this.addChild(bg);

        gameLogo = new Image(Assets.getAtlas().getTexture(("GameLogo.png")));
        gameLogo.x = stage.stageWidth/2 - gameLogo.width/2;
        gameLogo.y = 30;
        this.addChild(gameLogo);

        playBtn = new Button(Assets.getAtlas().getTexture("PlayBtn.png"));
        playBtn.x = stage.stageWidth/2 - playBtn.width/2;
        playBtn.y = 450;
        playBtn.addEventListener(Event.TRIGGERED, onPlayClick);
        this.addChild(playBtn);

        rankBtn = new Button(Assets.getAtlas().getTexture("RankBtn.png"));
        rankBtn.x = rankBtn.bounds.left + 60;
        rankBtn.y = 600;
        rankBtn.addEventListener(Event.TRIGGERED, onRankClick);
        this.addChild(rankBtn);

        settingBtn = new Button(Assets.getAtlas().getTexture("SettingBtn.png"));
        settingBtn.x = settingBtn.bounds.right + 60;
        settingBtn.y = 600;
        settingBtn.addEventListener(Event.TRIGGERED, onSettingClick);
        this.addChild(settingBtn);

    }

    private function onRankClick (event:Event):void
    {
        trace("LEADERBOARD BUTTON HIT")
    }

    private function onSettingClick (event:Event):void
    {
        trace("SETTING SCREEN BUTTON HIT")
    }

    private function onPlayClick (event:Event):void
    {
        playBtn.removeEventListener(Event.TRIGGERED, onPlayClick);
        trace("PLAY BUTTON HIT")

        gameLogo.visible = false;
        playBtn.visible = false;
        rankBtn.visible = false;
        settingBtn.visible = false;
        //bg.visible = false;
        inGame = new PlayGame();
    }


}

}

этот класс работает отлично сейчас.

«Класс PlayGame»

упаковка {

import starling.display.Image;
import starling.display.Sprite;
import starling.events.Event;

public class PlayGame extends Sprite
{
    private var bubble:Image;

    public function PlayGame ()
    {
        trace("PlayGame");
        super ();

        this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage2);
    }

    private function onAddedToStage2 (event:Event):void
    {
        trace("OnAddedToStage");
        this.removeEventListener (Event.ADDED_TO_STAGE, onAddedToStage2);

        drawScreen ();
    }

    public function drawScreen ():void
    {
         trace("Bubble");
         bubble = new Image(Assets.getAtlas().getTexture(("Bubble.png")));
         bubble.x = 100;
         bubble.y = 100;
         this.addChild(bubble);
    }


}

}

теперь отображается пузырьковое изображение, и я не знаю, почему?


person Sharon Shalom Iluz    schedule 28.03.2014    source источник


Ответы (1)


В них слишком много скобок, но это не ваша проблема

bubble = new Image(Assets.getAtlas().getTexture(("Bubble.png")));
//is less clean/readable than
bubble = new Image(Assets.getAtlas().getTexture("Bubble.png"));

Столкнувшись с такими проблемами, если starling/air не сообщает об ошибках, вы должны убедиться, что экранный объект в данный момент визуализируется.

Попробуйте применить цвет вместо текстуры.

bubble = new Image( Texture.fromColor(64,64,0xff99ff) );

Если этот код показывает причудливый прямоугольник со стороной 64 пикселя, проблема связана с вашим текстурным атласом или текстурой. Убедитесь, что у вас есть проверенный атлас, проверенные кадры и имена.

Если этот код не показывает симпатичный прямоугольник, ваша проблема связана не с атласом текстур или текстурой, а, скорее всего, со списком отображения скворца.

И в вашем случае, я думаю, вам просто нужно добавить Child the Ingame в свой класс GameMenu:

Игровое Меню:

private function onPlayClick (event:Event):void
{
    //... your stuff
    inGame = new PlayGame();

    this.parent.addChild(inGame);
}

И это должно работать.

person thenrion    schedule 05.06.2014