具体的情况如:使用labelFunction处理DataGrid显示内容 , 只是这里使用的是ItemRender来实现并实现更多功能.
如Student中有一Gender_属性, 1表示男生, 2表示女生, 3表示未知, 现在有下要求:
1. 在DataGrid中不可以显示1, 2,3, 应显示 男女 [ 该功能可由LabelFunction实现],
2. 如果为男生,, 则”男生”颜色为红色, 女生颜色为默认, 未知字体大小为10号
具体实现:
var columnGender:DataGridColumn = new DataGridColumn(); columnGender.headerText = "Gender"; columnGender.dataField = "Gender_"; //使用ItemRender columnGender.itemRenderer = new ClassFactory(Gender_Label); //columnGender.labelFunction = formatGender; _dataGridStudent.columns = [columnID, columnName, columnAge, columnGender];
ItemRender实现: 该类将继承List, 重写其UpdateDisplayList函数, 如下:
package com.test.itemRender { import mx.controls.Label; import mx.controls.listClasses.ListBase; public class Gender_Label extends Label { /** * 构造函数 */ public function Gender_Label() { super(); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); if(data.Gender_ == 1) { setStyle('fontSize',14); setStyle('fontWeight', 'bold'); setStyle('color', 0xDD0000); this.text = "男生"; }else if(data.Gender_ == 2) { setStyle('fontSize',14); this.text = "女生" } //otherwise, return the label to its regular state else { setStyle('fontSize', 10); this.text = "未知"; } } }// end of class }// end of package
最终效果:
今天老子太累了….一日一类扛不住了…先把以前的笔记发上来撑着吧… ECMAScript for XML (E4X)是一扩展了ECMAScript(JavaScript)的程式语言,它增加本地XML支持,为ECMAScript程序员提供了一种感觉直观的方式来访问XML文档。
//通过表达式直接创建XML对象[省略] //通过XML对象的构造函数创建XML对象[省略] //通过Array中Object建立. /**把所有person从数组Parry种提出来,并转换为XML格式, */ public static function allPersonsToXml():XML { var i:int; var flexXML:XML =for (i=0;i 访问XML:
E4X提供两种工具来访问一个XML层次结构中的数据:
XML和XMLLIst内容访问方法(attribute(),attribute()…等 具有点(.), 后裔(..), 和属性(@) 运算符的变量风格访问
在XML文档中,有一部分数据是以节点方式存在的.在使用XML对象过程中,除了使用节点之外,对于XML节点属性的访问也尤为重要.在AS3.0中,最基本属性访问方式就是使用”@”操作符.可以通过@操作符加属性名称的方式直接访问节点的属性.
Var flexXML : XML =//通过@访问属性 Trace(flexXML.FlashPlayer.@version); //9 Trace(flexXML.FlashPlayer.Flash.@version); //9 Trace(flexXML.FlashPlayer.@*.toXMLString); //输出: //9 //Adobe //使用attribute访问, Trace(flexXML.FlashPlayer.attribute(“version”); Trace(flexXML.FlashPlayer.attribute(“*”); Flash CS3 Flash 8 Flex3 Google Ajax1.0 遍历XML节点
/**用for in遍历数组中的Student,并插入到Paryy中.
*/
for (var name:String in novel.child("Student")) {
PArray.push(
new Student(novel.child("Student")[name].Name,
int(novel.child("Student")[name].Age)
)
);
} // End: for each StudentActionScript3.0中的参数传递方式
Categories: 垃圾山; Tagged with: ActionScript; @ November 11th, 2008 21:34对于ActionScript3.0而言, 函数提供两种参数传递方式: 值传递和引用传递,也就是我们常说的传值和传地址.如果通过值传递参数, 实际上在函数处理过程中,只改变副本的值, 对原先的值并没有改变. 如果是引用传递, 则直接传递变量本身, 这样在处理过程中可能会改变本身的值.
值传递[传值]
ActionScript3.0中的基本数据类型: Boolean, Int, Uint, Number, String都属于值传递.
如下:
var s:String = "liguoliang";
var s1:String = s;
s = "xx";
trace("s: " + s + " s1: " + s1); //s: xx s1: liguoliang整个过程如下:
1. 创建一个对象1,通过s获得引用, 类型为String, 内容为"liguoliang";
2. 创建另外一个对象2, 通过s1获得引用, 类型为String, 内容为"liguoliang";
3. 创建另外一个对象3, 通过s引用, 而对象一将在下次垃圾收集时,被清除.引用传递[传地址]
在ActionScript3.0,使用参数的值实际上是创建了一个参数的副本. 除了基本数据类型之外, 其他全部使用引用传递方式进行参数传递.
var a:Array = [‘one’, ‘two’];
var a1:Array = a;
a.push(‘three’);
trace("a: " + a + " a1: " + a1); //a: one,two,three a1: one,two,three过程如下:
1. 创建对象1, 通过1获得因哟哦那个, 类型为array, 内容为[‘one’, ‘two’];
2. 创建指向1的引用2. 1, 2 指向同一个数组.
3. 修改该数组.[一日一类_007]TopLevel: String
Categories: 垃圾山; Tagged with: ActionScript • Add new tag • Flex • Math; @ November 10th, 2008 23:24String类是ActionScript中描述字符串的类. 该类提供了处理字符串的属性与方法. 可以使用String()方法将各种类型的对象转换为Sring.
String是AS中文本的基础.一个字符串由零个或零个以上的字符组成.AS支持Unicode和ASCII两种文本编码格式.String可以通过直接赋值和new关键字两种方式创建.由单引号或双引号表示,必要的时候应使用转义字符’/’.
Public Properties
length:int
返回该String的长度.
Public Methods
String(val:String): 构造函数,新建一个String.
charAt(index:Number=0):Number: 返回在某个inidex的字符
charCodeAt(index:Number=0):Number 返回某个index的字符对应的Unicode字符码
concat(..args):Stirng: 连接两个字符串.
fromCharCode(charCodes):String 将某Unicode字符码转换为String
indexOf(): 从左向右找到的第一个目标的index
lastIndexOf(): 从左向右最后一个…也就是从右向左第一个.
localeCompare(): 判断连个字符串是否完全相同, 若返回值为0,则表示相同,其他值表示不同
replace:替换
search(): 从左向右第一个目标的index
slice(): 返回连个index之间的String
split(): 使用间隔符,将String分割为多个String,并放入数组中.
subStr(): 从某index开始向后的特定数目内返回的String
subString(): 类似slice();public function init():void { var s:String = "liguoliang"; var s1:String = ".com"; var s2:String = "liguoliang"; trace("s的长度: " + s.length); trace("第0个字符: " + s.charAt(0)); trace("s连接s1: " + s.concat(s1)); trace("65对应的char: " + String.fromCharCode(65)); trace("第一个l的位置" + s.indexOf("l")); trace("从index为2的字符开始向右找到的第一个l的index: " + s.indexOf("l",1)); trace("从右向做找到的第一个l的index: " + s.lastIndexOf("l")); trace(s.localeCompare(s2)); //如果返回值为零,则表示两个字符串完全相同, 如果返回值非零,则表示不同. trace("将li替换为s2: "+ s.replace("li", s2) + " " + s); trace("从左向右搜索到的第一个L: " + s.search("l")); trace("子字符串: " + s.slice(0, 1)); //不包括最后一个...如果参数为空,则置为-1.两参数都为空时,取全部 trace("子字符串:从index为0开始,取两个字符 " + s.substr(0, 2));//也不包括最后一个... trace("子字符串: " + s.substring(0, 1)); trace(s.split("i")); //返回l,guol,ang,若将最大值限制为2,则表示数组中进放入2个返回l,guol }字符串大小写转换:flexstr.toLowerCase(); flexstr.toUpperCase();
其他对象转换为String.在默认情况下,所有的AS对象都可以转换为String类型.每一个类都有一个toString方法.
通过toString可以将对象转换为String.[千斤顶之一日一类006]TopLevel:Math
Categories: Flex; Tagged with: ActionScript • Add new tag • Flex • Math; @ November 7th, 2008 0:05Math类中包含了常用数学运算的函数与值, 如正弦,PI等. 我那曾经扎实的数学根基竟然经不起时间的考验—似乎什么都记不起来了…API太高估我的实力了, 只给出了一个角度弧度互换的公式…
Math类中最多的函数莫过于正弦余弦,正切余切之类的了,想了半天才想起来一个正弦, 概念想不起来了,只是记得个曲线图….
public function init():void { trace(Math.abs(-1)); //1 trace(Math.PI); //3.141592653589793 trace(Math.sin(Math.PI/2));//1 trace(Math.asin(1)); //1.5707963267948966 trace(Math.random()); trace(Math.round(2.1)); //四舍五入 2 trace(Math.ceil(2.1)); //首位加一 3 trace(Math.floor(2.1)); //收尾 2 }注意部分函数的参数不是角度,而是弧度.
角度与弧度的换算:[API还是比较体贴的…]
radians = degrees * Math.PI/180degrees = radians * 180/Math.PI
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.