首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

大师如何给CheckBox implements ICellRenderer的类设true或false

2012-12-26 
大师怎么给CheckBox implements ICellRenderer的类设true或false本帖最后由 gaowenzhen 于 2012-07-16 22:

大师怎么给CheckBox implements ICellRenderer的类设true或false
本帖最后由 gaowenzhen 于 2012-07-16 22:34:05 编辑 我是flash 中actionscript3.0 中用到

有两个类 DataGridExample.as和CheckBoxRenderer.as

DataGridExample.as 类中的动态创建了一个DataGrid
 因第一列要用到CheckBox,我就用到了ICellRenderer,

 
CheckBoxRenderer.as
 原来有一个addEventListener(Event.CHANGE,onCheckChange);方法可老和DataGridExample类的Event.CHANGE跑到一起
 就不能准确的判断出true或false,因为程序是默认DataGridExample执行完自已的事件才能执行到CheckBoxRenderer类
如下是程序大师看一眼

#################################################
最终要求:点DataGrid第一列某个CheckBox得到真或假,同事得到DataGrid当前行的index,最好是在DataGridExample类中可以用到这些值感谢
##################################################



package 
{
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.Event;
import flash.text.TextField;

import fl.data.DataProvider;
import fl.controls.Label;

import fl.controls.ScrollBarDirection;
import flash.display.Bitmap;
import fl.controls.CheckBox;


import fl.controls.DataGrid;
import fl.controls.ScrollPolicy;
import fl.data.DataProvider;
import flashx.textLayout.container.ColumnState;
import flash.events.MouseEvent;
import flash.utils.setTimeout;







public class DataGridExample extends Sprite
{

public function DataGridExample()
{

}
public function setfilelistdata(w:int=0,h:int=0,imgadatalistarry:Array=null):void
{
createDataGrid(w,h,imgadatalistarry);
}

private var dg:DataGrid = new DataGrid();
private var dp:DataProvider= new DataProvider();
public function createDataGrid(w:int,h:int,imgdataarry:Array):void
{

if (dg != null && dg.parent != null)
{
dg.parent.removeChild(dg);
dg = null;
}


var i:uint;
for (i = 0; i < imgdataarry.length; i++)
{
//这里一个数组
dp.addItem({selete:i,data:Bitmap(imgdataarry[i].imgbit),GPS:imgdataarry[i].gps,"时间":imgdataarry[i].rsDateTime});
}


dg.setSize(w,h);
dg.columns = ["选择","图片","GPS","时间"];
dg.dataProvider = dp;
dg.move(5,30);
dg.rowHeight = 140;
dg.getColumnAt(0).width = 40;
dg.getColumnAt(1).width = 200;
dg.getColumnAt(2).width = 200;
dg.resizableColumns=false;
dg.getColumnAt(0).cellRenderer = CheckBoxRenderer;
dg.addEventListener(Event.CHANGE,onCheckChange);
addChild(dg);


}

private var CheckBoxclass:CheckBoxRenderer;
public function onCheckChange(e:Event):void
{
if(CheckBoxclass==null)
CheckBoxclass=new CheckBoxRenderer();
CheckBoxclass.onCheckChange(); 

}

}



}
















CheckBoxRenderer.as
package

    import fl.controls.CheckBox; 
    import fl.controls.listClasses.ICellRenderer; 
    import fl.controls.listClasses.ListData; 
    import flash.events.Event; 
    import fl.core.InvalidationType; 


    public class CheckBoxRenderer extends CheckBox implements ICellRenderer 
    { 
        public var _listData:ListData; 
        public var _data:Object; 
  
        public function CheckBoxRenderer(){ 
          // super(); 
          // addEventListener(Event.CHANGE,onCheckChange); 
        } 
        public function set data(d:Object):void{ 
           _data = d; 
           label = ""; 
           _selected = (_data["checked"]=='true')?true:false; 
        } 
        public function get data():Object { 
           return _data; 
        } 
        public function get selectedItem():Object { 
           return _data; 
        } 
        public function get listData():ListData { 
            return _listData; 
        } 
        public function set listData(value:ListData):void { 
            _listData = value; 
        } 
        override public function get selected():Boolean { 
            return _selected; 
         } 
       override public function set selected(value:Boolean):void {
       } 
    private var DataGridcheckstrin:DataGridExample;
//e:Event
        public function onCheckChange() {
trace("因不行我就考虑到从DataGridExample直接执行它可如下会报错");
             _selected = !_selected; 
this["checked"]=(_selected==true)?'true':'false';
            //_data["checked"] = (_selected==true)?'true':'false';
//if(DataGridcheckstrin==null){
//DataGridcheckstrin=new DataGridExample();
//}
//DataGridcheckstrin.rseonCheckChange((_selected==true)?'true':'false');

       } 
     } 
  }



[解决办法]
自已最终搞定

热点排行