2014-03-28 55 views
0

嗨,大家好我是新來的AS3和德裕我有不同類顯示圖像的問題。它確實顯示在我的遊戲菜單上,但我希望它能顯示在我的遊戲類遊戲中。八哥不顯示圖形

,所以我得到了3類主要啓動運行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(); 
    } 


} 

}

該類現在完美的作品。

「玩笑級」

包{

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


} 

}

泡沫圖像現在顯示,我不知道爲什麼?

回答

0

他們太括號,但是這不是你的問題

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

當面對這樣的問題,如果八哥/空氣不報告任何錯誤,你應該嘗試,以確保顯示對象目前呈現。

嘗試將顏色而不是紋理。

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

如果此代碼顯示64像素/邊的奇特矩形,則麻煩來自紋理圖集或紋理。確保有一個valided地圖集,驗證框架和名稱。

如果此代碼不顯示facy矩形,您的問題沒有從八哥的顯示列表來自紋理地圖或紋理,但更多的可能。

而在你的情況下, 我想你應該只需要的AddChild遊戲內你GameMenu類:

GameMenu:

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

    this.parent.addChild(inGame); 
} 

,它應該工作。