比如我声明了一个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是属于哪一个复杂数据类型的属性,怎么办?
}


慕哥6287543
浏览 180回答 2
2回答

慕婉清6462132

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;}}}

一只名叫tom的猫

给mc动态添加了一个数组属性mc.arr,然后在这个数组之中添加mc的各个因素,然后通过访问e.target.arr.a,e.target.arr.b等来得到当前捕获mc的各属性。&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP