package { import flash.display.DisplayObject; import flash.display.Sprite; import mx.core.IUITextField; import mx.core.UIComponent; import mx.core.UITextField; [Style(name="paddingLeft", type="Number", format="Length", inherit="no")] [Style(name="paddingRight", type="Number", format="Length", inherit="no")] [Style(name="paddingTop", type="Number", format="Length", inherit="no")] [Style(name="paddingBottom", type="Number", format="Length",inherit="no")] public class MessageText2 extends UIComponent { public function MessageText2() { super(); textField = IUITextField(createInFontContext(UITextField)); setStyle("paddingLeft",5); setStyle("paddingRight",5); setStyle("paddingTop",5); setStyle("paddingBottom",5); } protected var textField:IUITextField; public var text:String = ""; public var htmlText:String = ""; public var cornerRadius:Number = 0; public var backColor:Number = 0xFFFFFF; override protected function createChildren():void{ //绘制底色 var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(backColor,1); sprite.graphics.drawRoundRect(0,0,this.width,this.height,cornerRadius); sprite.graphics.moveTo(0,this.height/10); sprite.graphics.lineTo(-(this.width/25),this.height/3); sprite.graphics.lineTo(0,this.height/4); sprite.graphics.endFill(); this.addChild(sprite); //加文本框 this.addChild(DisplayObject(textField)); textField.width = this.width - getStyle("paddingLeft") - getStyle("paddingRight"); textField.height = this.height - getStyle("paddingBottom") - getStyle("paddingTop"); textField.x = getStyle("paddingLeft"); textField.y = getStyle("paddingTop"); textField.text = text; } } }
<local:MessageText2 width="400" height="100" text="test" cornerRadius="30"/>
package { import flash.display.Graphics; import flash.filters.DropShadowFilter; import mx.controls.TextInput; public class MessageText extends TextInput { public function MessageText() { super(); this.width = 250; this.height = 55; this.setStyle("cornerRadius","8"); } public var tipDirection:String = "right"; public var tipWidth:Number = 8; public var tipHeight:Number = 10; override protected function updateDisplayList(w:Number,h:Number):void{ super.updateDisplayList(w,h); if(this.parent==null) return; this.setStyle("borderStyle","solid"); this.setStyle("borderThickness",0); //得到绘制对象 var gfx:Graphics = this.graphics; //清楚原来绘制轨迹 gfx.clear(); //设置绘制的颜色以及透明度 gfx.beginFill(this.getStyle("backgroundColor"),this.getStyle("backgroundAlpha")); switch(tipDirection) { case 'bottom': //剪头向上 整体位于参照物的下方 gfx.moveTo(w/2 - tipWidth,0); //三角形的尖端点 gfx.lineTo(w/2,- tipHeight); gfx.lineTo(w/2 + tipWidth,0); break; case 'right': //剪头向左 整体位于参照物的右放 gfx.moveTo(0,h/4 - tipWidth); //三角形的尖端点 gfx.lineTo(-tipHeight,h/3); gfx.lineTo(0,h/4 + tipWidth); break; case 'left': //剪头想右 整体位于参照物的左方 gfx.moveTo(w,h/2 - tipWidth); //三角形的尖端点 gfx.lineTo(w+tipHeight,h/2); gfx.lineTo(w,h/2 + tipWidth); break; case 'top': //剪头想下 整体位于参照物的上方 gfx.moveTo(w/2 - tipWidth,h); //三角形的尖端点 gfx.lineTo(w/2,h + tipHeight); gfx.lineTo(w/2 + tipWidth,h); break; } // var p:Container = parent as Container; // //// var ba:uint = 1; //backgroundAlpha 背景透明度 //// var bg:uint = 0xffffff; //backgroundColor 背景颜色 // //获取容器定义的区域边界信息对象 // var vm:EdgeMetrics = p.viewMetrics; // //设置四个角的圆度 // var radiusContent:Object = {tl:vm.top,tr:0,bl:0,br:vm.top}; // //标题栏圆度 // var radiusTitle:Object = {tl:vm.top,tr:0,bl:0,br:0}; //// //画一个圆角矩形,整个背景 //// this.dw(0,0,w,h,radiusContent,bg,ba); //// //画一个圆角矩形,标题栏 //// this.drawRoundRect(0,0,w,vm.top,radiusTitle,0xff0000,.7); //// //画一个圆角矩形,标题栏的那个高光水晶条 //// this.drawRoundRect(0,0,w,vm.top / 2,radiusTitle,0xffffff,.3); // // //下面是画阴影的。 // var dropShadow:RectangularDropShadow = new RectangularDropShadow(); // dropShadow.distance = 8; // dropShadow.angle = 60; // dropShadow.color = 0x000; // dropShadow.alpha = 0.4; // // dropShadow.tlRadius = radiusContent.tl; // dropShadow.trRadius = radiusContent.tr; // dropShadow.blRadius = radiusContent.bl; // dropShadow.brRadius = radiusContent.br; // // dropShadow.drawShadow(gfx, 0, 0, w, h); // this.filters = [new DropShadowFilter(2, 90, 0x000000, 0.6, 2, 2, 1, 1, true)]; //绘制边框 // gfx.drawEllipse(0,0,w,h); // gfx.endFill(); } } }