zoukankan
html css js c++ java
監聽一個變量的值變化
Code
package system
{
import flash.utils.Proxy;
import flash.utils.flash_proxy;
public
dynamic
class
WO extends Proxy
{;
private
var _obj:
*
;
private
var _watchHashTable:Object;
/**/
/*
*Constructor WO
*
* @param obj:* 对象
*
*
*/
public
function WO(obj:
*
)
{
_watchHashTable
=
{}
;
_obj
=
obj;
}
/**/
/*
*Public function watch
*
* @param prop:String 属性
* @param callBackFunc:Function 回调函数
* @param arg:*=null 可选参数
*
*
*/
public
function watch(prop:String,callBackFunc:Function,arg:
*=
null
):
void
{
_watchHashTable[prop]
=
{}
;
_watchHashTable[prop].prop
=
prop;
_watchHashTable[prop].oldV
=
flash_proxy::getProperty(prop);
_watchHashTable[prop].newV
=
null
;
_watchHashTable[prop].callBackFunc
=
callBackFunc;
_watchHashTable[prop].arg
=
arg;
}
override
flash_proxy function callProperty(methodName:
*
,
args):
*
{
return
_obj[methodName].apply(_obj,args);
}
override
flash_proxy function getProperty(name:
*
):
*
{
//
trace("getProperty");
return
_obj[name];
}
override
flash_proxy function setProperty(name:
*
, value:
*
):
void
{
//
trace("setProperty");
if
(_watchHashTable[name]
!=
undefined
&&
value
!=
_watchHashTable[name].oldV)
{
_watchHashTable[name].newV
=
value;
_watchHashTable[name].oldV
=
_watchHashTable[name].callBackFunc.apply(
null
,[_watchHashTable[name].prop,_watchHashTable[name].oldV,_watchHashTable[name].newV,_watchHashTable[name].arg]);
}
_obj[name]
=
value;
}
}
}
例子:
Code
import com.ycccc.utils.WO;
var mc:MovieClip
=
new
MovieClip();
var __mc:WO
=
new
WO(mc);
var arg:String
=
"
1234
"
;
__mc.watch(
"
x
"
,watchFunc);
function watchFunc(p,o,n,arg)
{
trace(arguments);
return
n;
}
__mc.x
=
99
;
__mc.x
=
100
;
__mc.watch(
"
y
"
,watchFunc,arg);
__mc.y
=
101
;
__mc.y
=
102
;
__mc.watch(
"
z
"
,watchFunc,arg);
__mc.z
=
88
__mc.z
=
99
事实上,没有什么要比发现、培养、呵护、调整自己的心智的力量更重要的事情了.........
查看全文
相关阅读:
Mina入门:mina版之HelloWorld
Mina入门:Java NIO基础概念
Activity与Service进行数据交互
Android 6.0权限全面详细分析和解决方案
查看Android系统是User模式还是Eng模式
修改 Android 5.x 系统默认音量大小
Android执行程序或脚本的方法
Android Launcher 3 简单分析
将Android系统源码导入ecplise
Scrum三大角色特点
原文地址:https://www.cnblogs.com/appleseed/p/1381099.html
最新文章
3D Touch
objective c实现配置文件+反射
Vue.js基础 笔记
js中的call()和apply()方法
AJAX 状态值与状态码详解
JS函数大全 莫名其妙找到的
background(css复合写法)
JS笔记-强化版1
JS零碎小知识
Ajax笔记-加强版
热门文章
JQ笔记-加强版
HTML+css零碎小知识
Java面试题之谈谈你对Struts的理解
学习Java这几个快捷键你得知道(不断更新中)
使用Abator生产ibatis配置文件
在eclipse中怎么安装插件
Java面试题之J2EE是什么
Java面试题之Struts优缺点
怎样查看端口占用情况
下载安装tomcat6.0
Copyright © 2011-2022 走看看