2012-03-30 83 views
0

我創建了我自己的Button,它只是從Sprite擴展而來。 它能夠使用計時器顯示3個不同的文本淡入淡出。 在我的繪圖函數中,我首先繪製了一個代表按鈕背景的Sprites圖形對象的矩形。AS3繪製比我設置的更大的Sprite(填充/邊距?)

我添加了一個函數來設置按鈕的寬度。該屬性用於繪製矩形。我知道精靈的大小在矩形繪圖後更新。但由於某些原因,精靈的寬度總是超過我通過「setButtonWidth」函數設置的寬度。

現在我有一個簡單的精靈作爲一個按鈕有一個graphics.drawRectangle部分繪製一個簡單的矩形。可以說500px寬度。但是當我追蹤那個按鈕的寬度時,它總是多出10%左右。這10%來自哪裏?

我讀了關於調用validateNow()。但這僅適用於標籤或複選框。出於某種原因,我無法訪問標籤庫。這必須以某種方式與TextFields一起工作。但是如何?

// this function is part of MyButtonClass.as file 
function drawButton() 
{ 
    this.graphics.clear(); 
    this.graphics.beginFill(currentBackColor); 
    this.graphics.drawRoundRect(0, 0, int(this.buttonWidth)+20, 30, 10, 10); 
    this.graphics.endFill(); 
} 

// this code is in main action code frame 
// the buttonWidth is set this way 
stage.addEventListener(Event.RESIZE, updateBtn); 
function updateBtn(event:Event) 
{ 
    // access the container in which the buttons are in like ... 
    for(var i = 0; i < buttonContainer.numChildren; i++) { 
    var btn = buttonContainer.getChildAt(i) as MyButtonClass; 
    // MyButtonClass is the class which extends from Sprite drawing my button 
    // and using buttonWidth to draw the backgrounds width. 
    btn.setButtonWidth((stage.stageWidth/2) - 20); 
    // i set half of stageWidth because i have two columns with a list of buttons 
    // after setButtonWidth is called in MyButtonClass, the draw function is called 
    // which does the graphics stuff above. 
    } 
} 

this.buttonWidth設置爲500.在該精靈上沒有特別的做法。沒有孩子被添加,只有這個繪圖的東西。但是這將精靈的寬度設置爲550或者其他東西。

+0

創建實例是否確定按鍵寬度實際上是500像素寬,您不會錯過邊框/文本的寬度字段/低alpha的內容? – Marty 2012-03-30 00:36:22

+0

關心如何設置'this.buttonWidth'?所有這些代碼誰的寬度是從一個名爲'buttonWidth' + 20像素的變量計算出來的,我懷疑這是否會導致您遇到的問題。 – Daniel 2012-03-30 02:33:20

+0

'buttonWidth'如何設置? 'buttonWidth'的類型是什麼,使用'int'的類型轉換的用法是什麼? – Diode 2012-03-30 06:48:46

回答

0

定義Button這樣

package { 

    import flash.display.Sprite; 

    public class Button extends Sprite { 

     private var _buttonWith: int = 0; 
     private var _buttonHeight: int = 0; 

     public function Button() { 
      // constructor code 
     } 

     public function set buttonWidth(w: int): void { 
      _buttonWith = w; 
      updateButton(); 
     } 

     public function get buttonWidth(): int { 
      return _buttonWith; 
     } 

     public function set buttonHeight(h: int): void { 
      _buttonHeight = h; 
      updateButton(); 
     } 

     public function get buttonHeight(): int { 
      return _buttonHeight; 
     } 

     protected function updateButton() { 
      graphics.clear(); 
      graphics.beginFill(0xff00ff); 
      graphics.drawRoundRect(0, 0, buttonWidth, buttonHeight, 10, 10); 
      graphics.endFill(); 
     } 
    } 
} 

而且這樣

var button:Button = new Button(); 
addChild(button); 

button.buttonWidth = 100; 
button.buttonHeight = 30; 
+0

這正是我的按鈕類正在做的。除了高度設置,我只是使用靜態高度,這應該是一個問題。但仍然調用setButtonWidth後的按鈕寬度比我設置的更多。我追蹤了來自精靈對象的buttonWidth參數和按鈕本身的寬度參數。寬度總是大於我設置的buttonWidth。 – NovumCoder 2012-03-30 08:47:12