Flash AS_如何在不依赖Flex框架的情况下实现简单的数据绑定
在Flex项目中,数据绑定是非常常见的代码编写方式,通过这种方式,我们可以减轻很多繁琐的数据更新工作,并解除一些不必要的耦合。如果你还不了解绑定
如果我们是一个纯ActionScript或Flash项目,不想依赖体积大的Flex框架,而又想使用其中的绑定机制,该如何做呢?我们可以遵循绑定的思路,自己编写代码实现绑定的方法。这里以简单的字符串绑定为例,说明这个过程,当然要完整的实现对所有数据类型的绑定机制还是要编写更多的代码的,请参照Flex中对于绑定的实现。
解答
下面来看看是如何实现这套机制的,首先我们来创建一个可绑定的数据类,并实现对绑定对象的数据更新,注意主要是要用bind和unlock两个方法来实现对数据的绑定和解除绑定:
1.
package
2.
{
3.
4.
import flash.display.Sprite;
5.
import flash.events.Event;
6.
import flash.events.MouseEvent;
7.
8.
[SWF(width=400, height=400, frameRate=25,backgroundColor=0xFFFFFF)]
9.
public class AS3TestBind extends Sprite
10.
{
11.
private var main:MainContainer = new MainContainer();
12.
private var bindExpObj:BindableObject = new BindableObject("");
13.
private var cb:NeoComboBox = new NeoComboBox();
14.
15.
public function AS3TestBind()
16.
{
17.
super();
18.
cb.selected = true;
19.
cb.y = 10;
20.
cb.x = 320;
21.
cb.addEventListener(MouseEvent.CLICK,unlockBind);
22.
main.stringSRC.addEventListener(Event.CHANGE,dataChange);
23.
bindExpObj.bind(main.txt1,"text");
24.
bindExpObj.bind(main.txt2,"text");
25.
bindExpObj.bind(main.txt3,"text");
26.
bindExpObj.bind(main.mc.txt,"text");
27.
addChild(main);
28.
main.addChild(cb);
29.
}
30.
31.
private function dataChange(...args):void {
32.
bindExpObj.property = main.stringSRC.text;
33.
}
34.
35.
private function unlockBind(...args):void {
36.
if(cb.selected == true) {
37.
bindExpObj.unlock(main.txt1,"text");
38.
bindExpObj.unlock(main.txt2,"text");
39.
bindExpObj.unlock(main.txt3,"text");
40.
bindExpObj.unlock(main.mc.txt,"text");
41.
cb.selected = false;
42.
cb.tip.visible = false;
43.
} else {
44.
bindExpObj.bind(main.txt1,"text");
45.
bindExpObj.bind(main.txt2,"text");
46.
bindExpObj.bind(main.txt3,"text");
47.
bindExpObj.bind(main.mc.txt,"text");
48.
cb.selected = true;
49.
cb.tip.visible = true;
50.
}
51.
}
52.
53.
}
54.
}
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |