承蒙闪吧版主zszen关注,对我所说的Object.watch使用感兴趣,那我就专门对它的使用做个整理,虽然结合了比较老的JS方法SetVariable,而且个人感觉比较怪怪的,但确实有效。大家也可以当作一个思路的扩充,首先看一下演示。
其实实现道理很简单,利用SetVarible来更改AS中的一个变量,然后SWF中通过侦测变量的改变来判断JS的操作,进而执行相应的AS函数。只是这里的侦测变量没有用onEnterFram和setInteval,而是用了Object对象的watch方法。这是AS官方文档对此方法的解释:watch(Object.watch 方法)
public watch(name:String, callback:Function, [userData:Object]) : Boolean
注册当 ActionScript 对象的指定属性更改时要调用的事件处理函数。当该属性发生更改时,用 myObject 作为包含对象调用此事件处理函数。
演示实例中的AS代码如下:
//定义需要监视对象 var lis_obj:Object = new Object(); //定义监视变量 lis_obj.op_status = "init"; //监视变量 lis_obj.watch("op_status",doOperation); //定义回调函数 function doOperation(prop:String,oldVal:String,newVal:String){ //接收监视的变量名 //trace(prop); //接收改变前的变量值 //trace(oldVal); //接收改变后的变量值 //trace(newVal); //通过判断改变的值来执行下面的操作 if(newVal=="run"){ s_txt.text = "你点击了run按钮!" } else if(newVal=="walk"){ s_txt.text = "你点击了walk按钮!" } else if(newVal==oldVal){ s_txt.text = "你什么都没做!" } else{ s_txt.text = "你干了什么?" } //可是用unwatch删除对变量属性的监视 //lis_obj.unwatch(prop); } |
HMTL关键代码: <input type='button' value='Walk' onclick="doAction('walk');"/>
//定义一个JS函数
function doAction($s){
if(document.swf){
window.document.swf.SetVariable("lis_obj.op_status", $s);
}
}
//按钮调用JS函数来更改SWF中的变量
<input type='button' value='Run' onclick="doAction('run');"/>
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |