AS3 复杂数据类型声明属性及调用问题

比如我声明了一个Object类型的对象obj,然后用{}方法给obj声明了2个属性:varobj:Object={obj1:newMovieClip(),obj2:1};... 比如我声明了一个Object类型的对象obj,然后用{}方法给obj声明了2个属性:
var obj:Object={obj1:new MovieClip(),obj2:1};
然后对obj.obj1添加侦听函数:
obj.obj1.addEventListener(Event.ENTER_FRAME,onShow);
function onShow(e:Event):void{
var mc:MovieClip=e.target as MovieClip;
//请问在这里怎么通过mc找到obj并输出obj的第二个属性的值"1"?我知道可以直接打obj,但是如果批量的时候,不能直接得到mc是属于哪一个复杂数据类型的属性,怎么办?
}
展开
 我来答
百度网友e246de7
2011-07-01 · TA获得超过144个赞
知道小有建树答主
回答量:88
采纳率:80%
帮助的人:144万
展开全部
var obj:Object={obj1:new MovieClip(),obj2:1};
上面这样声明,obj1、obj2就是obj的属性,就像影片剪辑的x、y属性一样,可以通过影片剪辑的x、y属性访问到影片剪辑对象吗?答案是,不能。
所以你的要求也是不能实现的。

有两个修改意见提供给你参考:
1.不要对属性添加侦听,直接对obj添加侦听,这样一切都会变得很方便;
2.任然需要保留对属性侦听的情况:当有很多obj的时候,将他们放入一个数组objArr,然后在这个数组中查找符合条件的
function onShow(e:Event):void{
var mc:MovieClip=e.currentTarget as MovieClip;
for(var i:int = 0; i<objArr.length; i++){
if(objArr[i].obj1 == mc){
//objArr[i]就是你需要的
return;
}
}
}
追问
这个问题我解决了,我给mc动态添加了一个数组属性mc.arr,然后在这个数组之中添加mc的各个因素,然后通过访问e.target.arr.a,e.target.arr.b等来得到当前捕获mc的各属性。
不过还是谢谢你,你的方法相当好,我新手O(∩_∩)O
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式