Flex 是异步的...
这个大家应该是知道的...
那么,大家有没有对异步的开发方式困惑呢 ?
具体说就是...你不知道方法什么时候执行...
还是模糊,举个例子吧:
var request:URLLoader = new URLLoader();
request.addEventListener(Event.COMPLETE,loadStateInfo);
request.load(new URLRequest(this.file));
这个是Flex 读取远程资源的例子
这个语句监听了加载的完成,然后执行loadStateInfo函数
如果你需要同步机制怎么办?
加入你需要远程加载完成之后
再执行一些函数?
有人说很简单啊,在监听函数里面执行不就行咯...
加入你执行的函数需要传入参数呢? 那你如何传参?
比如你加载完成后要执行以下函数:
protected function moveEffect(target:UIComponent,targetX:int,targetY:int):void {
if (target.x != targetX || target.y != targetY) {
var move:Move = new Move(target);
move.xTo = targetX;
move.yTo = targetY;
move.play();
}
}
那你如何将所需的targetX和targetY传入给这个函数呢?
监听事件中 event:Event 这个对象有吗?
所以,你有几种选择...
1) 全局变量 或者 类属性
这个方法有点笨...但是有时候有用...
具体就是,设置一个或多个全局变量作为“暂时存储”,当方法完成后,再传入要执行的函数
2) 闭包特性
也就是不写出方法名,只有方法体:
this.addEventListener(LoadDataEvent.LOADDATA_EVENT,function(event:Event):void{
abc(arg1, arg2);
});
这样上面的arg1和arg2 这个2个参数,是局部的变量,但是使用了闭包这个特性
你就不用管它监听到事件后如何取得参数了,总之就是传进去了...
这样一说,大家会感觉闭包方法应该是非常好的...
但是...
我们必须又要面临的问题是...如果移除监听?
这个又成了难题...难道又用全局变量或者是属性?
那不成了第一个方法了?
如果监听的事件能像Timer类一样就好了...
/**延时执行.*/
var late:Timer = new Timer(300,1);
late.addEventListener(TimerEvent.TIMER_COMPLETE,function(event:TimerEvent):void {
removeElem(xFrom,yFrom);
});
late.start();
这个上面的第二种方法一样,使用了闭包的特性...
但是..又加上了Timer的特点...指定了监听次数...所以不用自己移除方法...
当然,局限性也凸显了...你需要定时...
说来说去... 小弟也没有什么好点子...
所以向各位请教...
或许这个问题早就有方法解决了的... 只是因为小弟见识不广,而导致这样的疑虑...
望指教...
分享到:
相关推荐
事件监听器按照它们添加到组件的顺序依次执行。同时,需要注意的是,事件冒泡机制允许事件从子组件向上传播到父组件,而事件捕获则相反,从父组件向下到子组件。 在调试和优化Flex应用时,理解这些方法调用的顺序...
此外,还会接触Flex的事件处理机制,理解如何通过事件监听器来响应用户交互。 第5章:组件篇 此章节深入讲解了Flex中的组件库,包括基本组件如Button、Label、TextInput,以及更复杂的组件如DataGrid、Tree等。你会...
例如,玩家的每一个动作都会触发相应的事件,ActionScript代码会监听并处理这些事件,使小球移动、碰撞并产生反馈。MXML则用于定义用户界面,包括游戏界面的布局、按钮、文本等元素。同时,物理引擎可能是通过模拟...
在Flex框架中,当绑定源数据发生变化时,它会发出一个事件,观察机制会接收到这个事件,并执行相应的代码以更新目标位置的数据。这种机制可以极大地提高开发效率,因为它减少了编写事件监听器和更新UI代码的需要。 ...
这里我们创建了一个新的声音对象,并监听了IO错误事件。然后加载指定的URL请求,最后播放声音。 设置音量的函数: ```actionscript function setVolume(volume:Number):void { trace("setVolume: " + soundvol....
例如,我们可以监听鼠标悬停事件来实现导航项的高亮效果: ```javascript $(document).ready(function() { $('#nav li a').hover(function() { $(this).addClass('active'); // 鼠标悬停时添加高亮类 }, ...
短信内容的显示会涉及到数据绑定,可能还需要监听用户交互事件,例如点击显示或隐藏泡泡窗口。 6. **API调用**:在获取和显示短信内容时,可能需要调用微信小程序的SMS API。这通常涉及到用户授权和隐私保护,因此...
- 同样未在代码片段中体现,但一般通过监听鼠标点击事件,获取鼠标点击的位置,并判断该位置是否合法,然后在相应位置绘制黑或白棋子。 4. **胜利检测**: - 需要编写逻辑来检查是否有五个连续的同色棋子在一行、...