2013-03-21 50 views
1

出於某種原因,我換行的最後一行不顯示問題與自動換行的Flashpunk

public class ShopButton extends Entity 
{ 

    private var callback:Function = null; 
    public var buttonText:String = ""; 
    public var textImage:Text; 
    public var picture:BitmapData = new BitmapData(100, 100, true, 1); 
    public var boxImage:Stamp; 
    public var displayImage:Graphiclist; 
    public var displayImage2:Graphiclist; 

    public var tooltipPicture:BitmapData = new BitmapData(150, 130, true, 1); 
    public var tooltipBox:Stamp; 
    public var tooltipText:Array = []; 
    public var tooltipString:Array = []; 


    public var buttonWidth:int = 100; 
    public var buttonHeight:int = 100; 

    private var clicked:Boolean = false; 
    private var shiftClicked:Boolean = false; 
    private var hovered:Boolean = false; 
    private var fontSize:int = 16; 

    public var label:String = ""; 

    public function ShopButton(x:int = 0, y:int = 0, label:String = "", callback:Function = null) 
    { 
     this.callback = callback; 
     this.label = label; 
     buttonText = label; 

     textImage = new Text(buttonText, 5, 5, { width:buttonWidth-10, wordWrap:true, align:"center", size:fontSize, font:"Abscissa" }); 
     Draw.setTarget(picture); 
     Draw.rectPlus(0, 0, buttonWidth, buttonHeight, 0x000000, 1, true, 2, 5); 
     Draw.rectPlus(0, 0, buttonWidth, buttonHeight, 0xFFFF00, 1, false, 5, 5); 

     boxImage = new Stamp(Assets.SHOPBUTTON); 
     textImage.y = (boxImage.height/2) - (textImage.height/2); 

     displayImage = new Graphiclist(boxImage, textImage); 

     super (x, y, displayImage); 

     setHitboxTo(boxImage); 

     Draw.setTarget(tooltipPicture); 
     Draw.rectPlus(0, 0, 150, 130, 0x000000, 1, true, 1, 0); 
     Draw.rectPlus(0, 0, 150, 130, 0xFFFF00, 1, false, 5, 0); 

     tooltipBox = new Stamp(Assets.SHOPBUTTONBORDER); 

     updateTooltip(); 
    } 

    public function updateTooltip():void 
    { 
     var minDamage:int = 0; 
     var maxDamage:int = 0; 
     var damageResist:int = 0; 

     switch(label) 
     { 
      case "Purchase Ammo": 
       tooltipString[0] = ""; 
       tooltipString[1] = "Purchase more"; 
       tooltipString[2] = "shurikens"; 
       tooltipString[3] = ""; 
       tooltipString[4] = "Shift + Click"; 
       tooltipString[5] = "To buy max"; 
       break; 
      case "Upgrade Melee Weapon": 
       minDamage = Globals.meleeDamage[0][Globals.meleeLevel]; 
       maxDamage = Globals.meleeDamage[1][Globals.meleeLevel]; 
       minDamage = minDamage * (1+(Globals.playerMeleeDamage/100)); 
       maxDamage = maxDamage * (1 + (Globals.playerMeleeDamage/100)); 
       tooltipString[0] = "Current Level"; 
       tooltipString[1] = "Damage: " 
       tooltipString[2] = "" + minDamage + " - " + maxDamage; 
       tooltipString[3] = "Next Level"; 
       if (Globals.meleeLevel < Globals.meleeMaxLevel) 
       { 
        minDamage = Globals.meleeDamage[0][Globals.meleeLevel + 1]; 
        maxDamage = Globals.meleeDamage[1][Globals.meleeLevel + 1]; 
        minDamage = minDamage * (1+(Globals.playerMeleeDamage/100)); 
        maxDamage = maxDamage * (1 + (Globals.playerMeleeDamage/100)); 
        tooltipString[4] = "Damage: " 
        tooltipString[5] = "" + minDamage + " - " + maxDamage; 
       } 
       else 
       { 
        tooltipString[4] = ""; 
        tooltipString[5] = "Max Level"; 
       } 
       break; 
      case "Upgrade Ranged Weapon": 
       minDamage = Globals.rangedDamage[0][Globals.rangedLevel]; 
       maxDamage = Globals.rangedDamage[1][Globals.rangedLevel]; 
       minDamage = minDamage * (1+(Globals.playerRangeDamage/100)); 
       maxDamage = maxDamage * (1 + (Globals.playerRangeDamage/100)); 
       tooltipString[0] = "Current Level"; 
       tooltipString[1] = "Damage: " 
       tooltipString[2] = "" + minDamage + " - " + maxDamage; 
       tooltipString[3] = "Next Level"; 
       if (Globals.rangedLevel < Globals.rangedMaxLevel) 
       { 
        minDamage = Globals.rangedDamage[0][Globals.rangedLevel + 1]; 
        maxDamage = Globals.rangedDamage[1][Globals.rangedLevel + 1]; 
        minDamage = minDamage * (1+(Globals.playerRangeDamage/100)); 
        maxDamage = maxDamage * (1 + (Globals.playerRangeDamage/100)); 
        tooltipString[4] = "Damage: " 
        tooltipString[5] = "" + minDamage + " - " + maxDamage; 
       } 
       else 
       { 
        tooltipString[4] = ""; 
        tooltipString[5] = "Max Level"; 
       } 
       break; 
      case "Upgrade Armor": 
       damageResist = Globals.armorDefense[Globals.armorLevel]; 
       damageResist = damageResist * (1 + (Globals.playerDefense/100)); 
       tooltipString[0] = "Current Level"; 
       tooltipString[1] = "Damage Resist: " 
       tooltipString[2] = "" + damageResist; 
       tooltipString[3] = "Next Level"; 
       if (Globals.armorLevel < Globals.armorMaxLevel) 
       { 
        damageResist = Globals.armorDefense[Globals.armorLevel + 1]; 
        damageResist = damageResist * (1 + (Globals.playerDefense/100)); 
        tooltipString[4] = "Damage Resist: " 
        tooltipString[5] = "" + damageResist; 
       } 
       else 
       { 
        tooltipString[4] = ""; 
        tooltipString[5] = "Max Level"; 
       } 
       break; 
     } 

     tooltipText[0] = new Text(tooltipString[0], 0, 10, {width:150, align:"center", size:fontSize, font:"Abscissa"}); 
     tooltipText[0].x = -25; 
     tooltipText[0].y -= 20; 
     tooltipText[1] = new Text(tooltipString[1], 0, 30, {width:150, align:"center", size:fontSize, font:"Abscissa"}); 
     tooltipText[1].x = -25; 
     tooltipText[1].y -= 20; 
     tooltipText[2] = new Text(tooltipString[2], 0, 45, {width:150, align:"center", size:fontSize, font:"Abscissa"}); 
     tooltipText[2].x = -25; 
     tooltipText[2].y -= 20; 
     tooltipText[3] = new Text(tooltipString[3], 0, 65, {width:150, align:"center", size:fontSize, font:"Abscissa"}); 
     tooltipText[3].x = -25; 
     tooltipText[3].y -= 20; 
     tooltipText[4] = new Text(tooltipString[4], 0, 85, {width:150, align:"center", size:fontSize, font:"Abscissa"}); 
     tooltipText[4].x = -25; 
     tooltipText[4].y -= 20; 
     tooltipText[5] = new Text(tooltipString[5], 0, 100, {width:150, align:"center", size:fontSize, font:"Abscissa"}); 
     tooltipText[5].x = -25; 
     tooltipText[5].y -= 20; 

     tooltipBox.x = -25; 
     tooltipBox.y = -20; 

     displayImage2 = new Graphiclist(tooltipBox, tooltipText[0], tooltipText[1], tooltipText[2], tooltipText[3], tooltipText[4], tooltipText[5]); 

    } 

    public function click(action:String = ""):void 
    { 
     //trace(action); 
     if (action == "Shift" && label == "Purchase Ammo" && callback != null) callback("Shift"); 
     else if (callback != null) callback(); 
    } 

    override public function update():void 
    { 
     super.update(); 
     if (collidePoint(x, y, world.mouseX, world.mouseY)) 
     { 
      if (Input.mousePressed && !Input.check(Key.SHIFT)) 
      { 
       shiftClicked = false; 
       clicked = true; 
      } 
      if (Input.mousePressed && Input.check(Key.SHIFT)) 
      { 
       //trace ("Shifty"); 
       clicked = false; 
       shiftClicked = true; 
      } 
      if (Input.mouseReleased && clicked) click(""); 
      if (Input.mouseReleased && shiftClicked) click("Shift"); 
      hovered = true; 
     } 
     else hovered = false; 

     if (Input.mouseReleased) clicked = false; 

     if (hovered) 
     { 
      updateTooltip(); 
      graphic = displayImage2; 
     } 
     else graphic = displayImage; 
    } 

} 

當我運行它,它會顯示所有,但文字的最後一行(我想我需要的一個代表10發佈截圖)。例如,第一個按鈕顯示「Purchase」而不是「Purchase Ammo」。

有沒有人曾經遇到過這個問題,如果是的話,你如何解決它?

+0

嘗試降低字體大小,也許您已經越過了按鈕的文本字段限制。 – Vesper 2013-03-22 01:44:22

回答

0

我已經遇到了一些與自動換行有關的問題。看起來,對於Text類,當您指定寬度和高度,然後將單詞換行設置爲true並且重要時,單詞換行可正確工作 - 可調整爲false。

0

我只是有完全相同的問題,請嘗試設置高度屬性,爲我解決。