我有一個問題。我已經縮小到我的按鈕類,如果我在按鈕精靈區域下方單擊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;
}
}
}
任何建議將不勝感激。
難道你看着辦吧? – BadFeelingAboutThis
全部修復。謝謝你的幫助! :) – BlackBishop88