2019独角兽企业重金招聘Python工程师标准>>>
public class RadioCell extends Sprite
{
public var radioMc:Mc;
public var id:Object;
public var radioName:String;
public function RadioCell(_id:Object = null, _name:String = "", content:String = "", size:int = 14, isBold:Boolean = false)
{
this.buttonMode = true;
this.useHandCursor = true;
if(null != _id)
{
setData(_id, _name, content, size, isBold);
}
}
public function setData(_id:Object, _name:String, content:String, size:int = 14, isBold:Boolean = false):void
{
id = _id;
radioName = _name;
radioMc = new fl_oneSelectMc();
this.addChild(radioMc);
radioMc.gotoAndStop(1);
var htmlContent:String = ""+content+"";
if(true == isBold)
{
htmlContent = ""+htmlContent+"";
}
var txt:TextField = this.createTxtField(htmlContent);
this.addChild(txt);
txt.x = 21;
if(txt.textHeight + 5 > 20)
{
radioMc.y = (txt.textHeight - 15)*0.5 + 2;
}
else
{
txt.y = (15 - txt.textHeight)*0.5 + 2;
}
RadioManager.getInstance().addItem(this);
}
public function clearSelect():void
{
radioMc.gotoAndStop(1);
}
public function Select():void
{
radioMc.gotoAndStop(2);
}
private function createTxtField(str:String):TextField
{
var txtField:TextField = new TextField();
txtField.selectable = false;
txtField.width = 120;
txtField.height = 50;
txtField.autoSize = TextFieldAutoSize.LEFT;
txtField.htmlText = str;
return txtField;
}
}
//管理器
public class RadioManager
{private static var instance:RadioManager;
private var radioTypesDict:Dictionary;
private var radioValueDict:Dictionary;
public function RadioManager()
{
radioTypesDict = new Dictionary();
radioValueDict = new Dictionary();
}
public static function getInstance():RadioManager
{
return instance = instance || new RadioManager();
}
/**
* 添加单选项
*/
public function addItem(radioCell:RadioCell):void
{
if(null == radioTypesDict[radioCell.radioName])
{
radioTypesDict[radioCell.radioName] = [];
}
var arr:Array = radioTypesDict[radioCell.radioName];
radioCell.addEventListener(MouseEvent.CLICK, onMouseClickHandler);
arr[arr.length] = radioCell;
}
private function onMouseClickHandler(e:MouseEvent):void
{
var radioCell:RadioCell = e.currentTarget as RadioCell;
//已选的就不再遍历了
if(radioValueDict[radioCell.radioName] == radioCell)
{
return;
}
//上一次选中的去掉
if(null != radioValueDict[radioCell.radioName])
{
(radioValueDict[radioCell.radioName] as RadioCell).clearSelect();
}
//选中这次点击
radioCell.Select();
radioValueDict[radioCell.radioName] = radioCell;
}
/**
* 获得单选框的值
* @param _name 类型名
* @return
*/
public function getSelectedRadioId(_name:String):Object
{
return (radioValueDict[_name] as RadioCell).id;
}
/**
* 设置默认选中
* @param _name 类型
* @param id 标识
*/
public function setDefaultSelectedRadio(_name:String, id:Object):void
{
//遍历
for each(var cell:RadioCell in radioTypesDict[_name])
{
if(cell.id == id)
{
cell.Select();
break;
}
}
}
/**
* 设置选框不可点
*/
public function disableRadioType(_name:String):void
{
for each(var cell:RadioCell in radioTypesDict[_name])
{
cell.buttonMode = false;
cell.useHandCursor = false;
cell.mouseEnabled = false;
cell.removeEventListener(MouseEvent.CLICK, onMouseClickHandler);
}
}
/**
* 设置选框可点
*/
public function ableRadioType(_name:String):void
{
for each(var cell:RadioCell in radioTypesDict[_name])
{
cell.buttonMode = true;
cell.useHandCursor = true;
cell.mouseEnabled = true;
cell.addEventListener(MouseEvent.CLICK, onMouseClickHandler);
}
}
}