2015-08-14 86 views
0

我有一個問題。我已經縮小到我的按鈕類,如果我在按鈕精靈區域下方單擊50-100px,觸發mouse.click事件偵聽器。as3按鈕被點擊按鈕下方50像素

在一個點上我認爲與精靈兒童嵌套問題可能是你造成的,但即使添加按鈕直階段具有同樣的效果。

我重寫了按鈕類從頭開始,同樣的事情發生。 我不確定這是否發生,因爲我正在用flex框架或其他方式編寫純粹的as3。這裏是按鈕代碼類:

package org.project.ui 
{ 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import flash.display.Graphics; 
import flash.text.TextField; 
import flash.text.TextFormat; 
import flash.text.TextFormatAlign; 
import flash.display.Shape; 
import flash.display.SimpleButton; 
import flash.display.Sprite; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import flash.text.TextField; 
import flash.text.TextFormat; 
import flash.text.TextFormatAlign; 
import org.project.controller.IController; 
import flash.utils.getQualifiedClassName; 
/** 
* 
* 
*/ 
public class CustomButton2 extends CustomSprite 
{ 
    protected var _button:Sprite; 
    protected var _buttonFunction:Function = null; 
    protected var _label:String = ""; 

    protected var _textField:TextField; 
    protected var _textFormat:TextFormat; 
    protected var _font:String = "Arial"; 
    protected var _fontSize:int = 12; 
    protected var _fontColor:uint = 0x000000; 

    protected var _buttonWidth:int = 110; 
    protected var _buttonHeight:int = 30; 

    public function CustomButton2(label:String, id:String, w:int, h:int, buttonFunction:Function = null) 
    { 
     super(id, content); 
     _label = label;   
     _buttonWidth = w; 
     _buttonHeight = h;  
     _button = makeButton(label, w, h, buttonFunction); 
     addButtonListeners(); 
     addChild(_button); 
    } 


    protected function makeButton(label:String, w:int, h:int, buttonFunction:Function = null):Sprite { 
     _button = new Sprite(); 
     _button = drawButton(_button); 
     _button.useHandCursor = true; 
     _button.buttonMode = true; 
     _button.mouseChildren = false; 


     _button = addTextField(label, _button); 
     return _button; 
    } 

    protected function addTextField(label:String, button:Sprite):Sprite { 
     _textFormat = new TextFormat(_font, _fontSize, _fontColor, false, null, null, null, null, TextFormatAlign.CENTER); 
     _textField = new TextField(); 
     _textField.defaultTextFormat = _textFormat; 
     _textField.name = "textField_" + id; 
     _textField.text = _label; 
     _textField.selectable = false; 
     button.addChild(_textField); 

     return button; 
    } 

    protected function addButtonListeners():void { 
     _button.addEventListener(MouseEvent.CLICK, mouseClick); 
     _button.addEventListener(MouseEvent.ROLL_OVER, mouseRollover); 
     _button.addEventListener(MouseEvent.ROLL_OUT, mouseRollOut); 
    } 

    protected function mouseClick(e:MouseEvent) { 
     e.stopPropagation(); 
     if (_buttonFunction) { 
      _buttonFunction(); 
     } 
     changeButtonDisplay(); 

     trace("click"); 

    } 

    protected function mouseRollover(e:MouseEvent) { 
     changeButtonDisplay(0xFF0000); 
    } 

    protected function mouseRollOut(e:MouseEvent) { 
     changeButtonDisplay(0xFFCC00); 
    } 

    protected function changeButtonDisplay(u:uint = 0xFF0000, w:int = 110, h:int = 30):void { 
     _button = drawButton(_button, w, h, u); 
    } 


    protected function drawButton(button:Sprite, w:int = 110, h:int = 30, u:uint = 0xFFCC00):Sprite{ 
     button.graphics.beginFill(u); 
     button.graphics.lineStyle(1); 
     button.graphics.drawRoundRect(0, 0, w, h, 20); 
     button.graphics.endFill(); 
     button = addTextField(_label, button); 
     return button; 
    } 
} 

} 

任何建議將不勝感激。

+0

難道你看着辦吧? – BadFeelingAboutThis

+0

全部修復。謝謝你的幫助! :) – BlackBishop88

回答

0

最有可能你的TextField是延長過去的按鈕的其餘部分。

它不會出現像您設置文本字段的邊界,所以這將是默認的(通常是100x100廣場)。

我建議明確設置文本字段的寬度和高度以匹配您的按鈕。

_textField.width = _buttonWidth; 
_textField.height = _buttonHeight; 

或者相反,如果你希望所有的文本可見不管是什麼,你可以使用autoSize屬性使文本字段範圍符合實際的文本。

_textField.autoSize = TextFieldAutoSize.LEFT; 
+0

感謝您的反饋。 我試着按照建議添加寬度和高度,現在mouseover和mouseclick正在屏幕底部拾取。 至少我現在知道它的一個textfield問題。 – BlackBishop88

+0

另外我剛剛發現,如果我手動輸入110爲textfield.width和textfield.height爲30,而不是引用buttonheight和寬度它的作品。 textfield.width期望一個數字不是int。 – BlackBishop88

+0

你可以給'Number'屬性賦一個'int'。 – BadFeelingAboutThis