AS函数的一些特殊应用
1. 根据数字决定调用函数个数,并动态给对象赋属性
{ flash.display.Sprite; Sample9261Sprite { Sample9261() { arr:Array = Array(); arr.push(aFunc); arr.push(bFunc); arr.push(cFunc); obj:Object = Object(); (i:uint=0;i<arr.length;i++) { arr[i](obj); } (j:String obj) { (j++obj[j]); } (k:String obj) { (k); } } aFunc(obj:Object): { obj.attribute1 = ; (); } bFunc(obj:Object): { obj.attribute2 = ; (); } cFunc(obj:Object): {obj.attribute3 = ; (); } } }
2. 动态改变函数调用顺序
{ flash.display.Sprite; Sample9261Sprite { Sample9261() { arrIndex:Array = [2,0,1]; arrFunc:Array = Array(); arrFunc.push(aFunc); arrFunc.push(bFunc); arrFunc.push(cFunc); (i:uint=0;i<arrIndex.length;i++) { arrFunc[arrIndex[i]](); } } aFunc(): { (); } bFunc(): { (); } cFunc(): { (); } } }
3. 利用函数返回函数
{ flash.display.Sprite; Sample9261Sprite { Sample9261() { chooseFuncBy()(); chooseFuncBy()(,); chooseFuncBy()(); withObj:Object = Object(); myObj:Object = {name:,blog:,hobby:}; chooseFuncBy(withObj)(myObj); } chooseFuncBy(input:*):Function { (!(input String)) { objectFunc; } (input) { : aFunc; : bFunc; : kingdaFunc; } } aFunc(str:String): { (+str); } bFunc(str1:String,str2:String): { (+str1++str2); } kingdaFunc(...rest): { (); } objectFunc(kingdaObj:Object): { (); (i:String kingdaObj) { (i++kingdaObj[i]); } } } }
4. 函数动态添加属性(可以得到该函数被调用次数)
{ flash.display.Sprite; Sample9261Sprite { Sample9261() { shot:Function = ():{ shot[]++; (+shot[]); } shot[] = 0; shot(); shot(); shot(); } } }
5. 函数对象动态添加实例方法
{ flash.display.Sprite; Sample9261Sprite { Sample9261() { shot:Function = (): { shot[]++; (+shot[]); shot[](); } shot[] = 0;shot[] = (): { (+this[]); (this[]>3) { this[] = 0; } } shot[](); shot(); shot(); shot(); shot(); shot(); shot(); } } }
6. 动态改变实例里面的方法实现
MyClass.as
Model { MyClass { MyClass() { } AlertFunc:Function = (): { (); } } }
Sample9271.as
{ flash.display.Sprite; Model.MyClass; Sample9271Sprite { Sample9271() { model:MyClass = MyClass(); model.AlertFunc(); model.AlertFunc = AMFunc; model.AlertFunc(); model.AlertFunc = PMFunc; model.AlertFunc(); } AMFunc(): { (); } PMFunc(): { (); } } }
转载于:https://www.cnblogs.com/CoderWayne/archive/2010/07/15/1778023.html
AS函数的一些特殊应用相关推荐
- 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...
- Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译
Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...
- C++ 笔记(34)— C++ exit 函数
当遇到 main 函数中的 return 语句时,C++ 程序将停止执行.但其他函数结束时,程序并不会停止.程序的控制将返回到函数调用之后的位置.然而,有时候会出现一些非常少见的情况,使得程序有必要在 ...
- C++ 笔记(30)— 友元函数与友元类
我们知道类的私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. ...
- 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )
1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...
- 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)
编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...
- Go 学习笔记(65)— Go 中函数参数是传值还是传引用
Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...
- Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法
函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...
- C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明
带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...
- OpenCV 笔记(09)— 常用的数据结构和函数(Vec、Point、Scalar、Size、Rect、cvtColor)
1. Vec 对象类型 Vec 是一个主要用于数值向量的模板类.我们可以定义向量的类型和组件的数量: Vec<double, 19> myVector 我们还可以使用任何的预定义类型: t ...
最新文章
- python打包发布到手机_Python打包操作与在线发布
- Django实战之开发面向用户的界面
- 统计表格 + 可视化 ,这个超强绘图技巧值得一看!!
- Linux系统下区别对比(~、/home与/root)
- 从JavaFX 1.3迁移到JavaFX 2.0
- es6 数组合并_JavaScript学习笔记(十九)-- ES6
- 铁路cj继电器_几类铁路信号继电器.ppt
- python日志模块----logging
- IDEA格式化XML中的SQL语句
- 使用360安全卫士对计算机进行体检,360安全卫士使用教程 电脑体检
- python不是5的倍数_查找所有低于1000的数字之和,这是Python中3或5的倍数
- c++复习篇(三)--函数调用堆栈
- JAVA音程_桌面应用|与 Linux 一起学习:学习音乐
- WebStorm配置TSLint
- 多重剪贴板工具 CLCL
- 计算机向u盘拷贝速度慢,U盘复制速度慢的解决措施
- Redis缓存穿透、击穿、雪崩、概念及解决办法
- js 操作字符串,
- Linux 系统管理命令
- 不用u盘如何在小米电视上安装电视直播软件