最近在学习Flash的简单东西。为了数据和表现的分离,我把读取数据的代码做成一个类,跟显示数据的控件分开。
在第一帧的AS中,将一个数组的数据用循环显示到控件上,控件也是一个数组。但是,如果要给控件加上事件处理,比如点击,在处理函数中想获得数据,怎么办呢?
最直接的办法是用Array.indexOf()函数取得控件在数组中的下标,然后再取数据数组中的对应下标的元素,不是太好。
本来我是想在控件中找类似“setAttribute/getAttribute”的函数的(Java的HttpServletRequest有get/setAttribute,另外Eclipse JDT的编译器语法结构类都有get/setProperty:) )。后来发现了帮助中在讲Array时提到两种,一种indexed,一种associative,后者就是Dictionary。
你可以写,
var map:Dictionary = new Dictionary();
map[displayObject] = data;
在event handler里,map[e.target]就可以取得对应数据了。嗯,也可以叫做Map
Leave a Reply