Actionscript 3 DrawRoundRect大小存在问题
我正在尝试使用ActionScript 3.0创建一个自定义按钮。我正在起诉一个圆形矩形作为背景,但我对它的大小有一个问题 这是我的自定义按钮类:Actionscript 3 DrawRoundRect大小存在问题,actionscript-3,graphics,mobile,drawing,Actionscript 3,Graphics,Mobile,Drawing,我正在尝试使用ActionScript 3.0创建一个自定义按钮。我正在起诉一个圆形矩形作为背景,但我对它的大小有一个问题 这是我的自定义按钮类: package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; import flash.display.Shape; public class customButton ext
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Shape;
public class customButton extends Sprite
{
private var background:Shape;
public var bgColor:uint;
public var borderColor:uint;
public var borderSize:uint;
public var cornerRadius:uint;
private var label:TextField;
public function customButton(text:String)
{
super();
this.opaqueBackground = 0xFF0000;
background = new Shape();
borderSize = 1;
borderColor = 0x666666;
bgColor = 0xFFCC00;
cornerRadius = 9;
label = new TextField();
label.text = text;
var format:TextFormat = new TextFormat();
format.font = "Verdana";
format.color = 0;
format.size = 38;
format.underline = true;
label.defaultTextFormat = format;
addChild(background);
addChild(label);
buttonMode = true;
mouseChildren = false;
}
public function draw():void
{
background.graphics.lineStyle(borderSize, borderColor);
background.graphics.beginFill(bgColor);
background.graphics.drawRoundRect(0, 0, this.width, this.height cornerRadius);
background.graphics.endFill();
}
}
}
这是用来显示按钮的代码:
public function Test01()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
button = new customButton("Button");
button.x = 200;
button.y = 300;
button.width = 200;
button.height = 100;
button.draw();
addChild(button);
}
button.width = 200;
button.height = 100;
如果我将此大小设置为按钮:
public function Test01()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
button = new customButton("Button");
button.x = 200;
button.y = 300;
button.width = 200;
button.height = 100;
button.draw();
addChild(button);
}
button.width = 200;
button.height = 100;
我得到以下信息:
但我将其设置为按钮大小:
按钮宽度=40;
按钮高度=20
(此大小与customButton类中使用的相同)。我得到:
我不知道为什么当我使用(40,20)的尺寸时,我得到的矩形比那个尺寸小
有什么建议吗
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Shape;
public class customButton extends Sprite
{
private var background:Shape;
public var bgColor:uint;
public var borderColor:uint;
public var borderSize:uint;
public var cornerRadius:uint;
public var bWidth:Number;
public var bHeight:Number;
private var label:TextField;
public function customButton(text:String, bW:Number, bH:Number)
{
super();
this.bWidth = bW;
this.bHeight = bH;
background = new Shape();
borderSize = 1;
borderColor = 0x666666;
bgColor = 0xFFCC00;
cornerRadius = 9;
label = new TextField();
label.text = text;
var format:TextFormat = new TextFormat();
format.font = "Verdana";
format.color = 0;
format.size = 38;
format.underline = true;
label.defaultTextFormat = format;
addChild(background);
addChild(label);
buttonMode = true;
mouseChildren = false;
background.graphics.lineStyle(borderSize, borderColor);
background.graphics.beginFill(bgColor);
background.graphics.drawRoundRect(0, 0, bWidth, bHeight, cornerRadius);
background.graphics.endFill();
}
}
}
尝试此操作因为您直接将宽度设置为
精灵
,它会更改精灵的大小,而不会更改正在绘制的背景的大小
在customButton类中添加一些代码:
private var _width:Number = 10;
private var _height:Number = 10;
override public function get width():Number { return _width; }
override public function set width(value:Number):void
{
_width = value;
draw ();
}
override public function get height():Number { return _height; }
override public function set height(value:Number):void
{
_height = value;
draw ();
}
private function draw():void
{
background.graphics.clear ()
background.graphics.lineStyle(borderSize, borderColor);
background.graphics.beginFill(bgColor);
background.graphics.drawRoundRect(0, 0, _width, _height, cornerRadius);
background.graphics.endFill();
}
使用此代码,您将能够每次更改背景大小,并且不会影响其他组件。您的roundRect类大小已固定,因此在增加宽度时不会进行更改 为宽度(Bwidth)和高度(Bheight)创建两个公共参数并访问它 像
谢谢你的回答。如果我使用它,将大小设置为(40,20),我会得到这样的结果:这是正确的。Bhe按钮背景为40x20像素。但是您使用的是
opaqueBackground=0xFF0000
属性,因此这意味着在本例中,displayObject的所有背景都将填充为红色背景。您拥有的大红色区域是文本字段影响,因为默认情况下TF大小为100x100。要防止出现这种情况,应使用:label.autoSize=TextFieldAutoSize.LEFT代码>