February 02, 2010

Create Custom controls in AS3

Hi,
I would like to create the controls dynamically using the actionscript. So i create the actionscript class for creating the Button, Text Field, and TextInput controls by using the AS3. Here i added the code for creating the controls in AS3.
package util{
import flash.geom.Matrix;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import fl.controls.ProgressBar;
import flash.text.TextFieldType;
import flash.display.SimpleButton;
import flash.text.TextFormatAlign;
import flash.display.GradientType;
import fl.controls.ProgressBarMode;
import flash.text.TextFieldAutoSize;
public class ControlUtils
{
public function ControlUtils() { }
public function createTextField(color:uint):TextField
{
var _txtFormat:TextFormat = new TextFormat();
_txtFormat.font = "Arial";
_txtFormat.size = 12.5;
_txtFormat.bold = true;
_txtFormat.color = color;
var _txtField:TextField = new TextField();
_txtField.autoSize = TextFieldAutoSize.CENTER;
_txtField.defaultTextFormat = _txtFormat;
_txtField.selectable = false; return _txtField;
}
public function createInputBox(wid:int,hgt:int,bgColor:uint,borderColor:uint):TextField
{
var _txtField:TextField = new TextField();
_txtField.type = TextFieldType.INPUT;
_txtField.background = true;
_txtField.border = true;
_txtField.width = wid;
_txtField.height = hgt;
_txtField.backgroundColor = bgColor;
_txtField.borderColor = borderColor;
_txtField.selectable = false;
return _txtField;
}
public function createButton(buttonText:String,wid:int,hgt:int,color:Array,overColor:Array,txtColor:uint,cornerRadius:int=2):SimpleButton
{
var _colors:Array = [color[0],color[1]];
var _alphas:Array = [1,1];
var _ratios:Array = [0,255];
var _matrix:Matrix = new Matrix();
_matrix.createGradientBox(wid,hgt,Math.PI/2,0,0);
var _btnUpState:Sprite = new Sprite();
_btnUpState.graphics.lineStyle(1,_colors[0]);
_btnUpState.graphics.beginGradientFill(GradientType.LINEAR,_colors,_alphas,_ratios,_matrix);
if((_colors[0] == _colors[1]) && (cornerRadius == 0))
_btnUpState.graphics.drawRect(0,0,wid,hgt);
else if((_colors[0] == _colors[1]) && (cornerRadius > 0))
_btnUpState.graphics.drawRoundRect(-cornerRadius/2,0,wid-cornerRadius/2,hgt,cornerRadius,cornerRadius);
else if(_colors[0] != _colors[1])
_btnUpState.graphics.drawRoundRect(0,0,wid,hgt,cornerRadius,cornerRadius);
_btnUpState.addChild(createButtonTextField(buttonText,txtColor,wid,hgt,cornerRadius));
if(overColor == null)
_colors = [color[1],color[0]];
else
_colors = [overColor[0],overColor[1]];
var _btnOverState:Sprite = new Sprite();
_btnOverState.graphics.lineStyle(1,_colors[0]);
_btnOverState.graphics.beginGradientFill(GradientType.LINEAR,_colors,_alphas,_ratios,_matrix);
if((_colors[0] == _colors[1]) && (cornerRadius == 0))
_btnOverState.graphics.drawRect(0,0,wid,hgt);
else if((_colors[0] == _colors[1]) && (cornerRadius > 0))
_btnOverState.graphics.drawRoundRect(-cornerRadius/2,0,wid-cornerRadius/2,hgt,cornerRadius,cornerRadius);
else if(_colors[0] != _colors[1])
_btnOverState.graphics.drawRoundRect(0,0,wid,hgt,cornerRadius,cornerRadius);
_btnOverState.addChild(createButtonTextField(buttonText,txtColor,wid,hgt,cornerRadius));
var _myButton:SimpleButton = new SimpleButton(_btnUpState,_btnOverState,_btnUpState,_btnUpState);
_myButton.name = buttonText;
return _myButton;
}
private function createButtonTextField(Text:String,color:uint,wid:int,hgt:int,cornerRadius:int):TextField
{
var _txtField:TextField = new TextField();
_txtField.autoSize = TextFieldAutoSize.LEFT;
_txtField.textColor = color;
_txtField.selectable = false;
_txtField.width = wid;
_txtField.height = hgt;
var _txtFormat:TextFormat = new TextFormat();
_txtFormat.align = TextFormatAlign.CENTER;
Text = ""+Text+"";
_txtField.htmlText = ""+Text+"";
_txtField.x = (wid - _txtField.width)/2 - cornerRadius/2;
_txtField.y = (hgt - _txtField.height)/2; return _txtField;
}
public function createProgressBar(wid:int,hgt:int,barColor:Array,trackColor:uint):Preloader
{
var _progressBar:Preloader = new Preloader(wid,hgt,trackColor);
_progressBar.barColor = barColor; return _progressBar;
}
}
}

No comments:

Post a Comment