对象间的相互响应

现在假设有两个mc对象,并希望他们之间可以相互相应。根据他们之间的位置关系,可以有不同的方法。

除了两个对象间的位置关系之外,代码层的位置也很至关重要。所以事实上是这三者关系最终决定了方法是什么。

其实方法的实质就是如何在不同的情况下获得对两个对象的引用。

一、最简单的一种情况是两个mc共享一个容器,并且代码层写在容器中,如图1。这样的话,我们可以在父容器中直接通过两个mc的实例名称来对其进行引用。具体地,我们可以对mc1添加事件侦听,在侦听函数中直接调用mc2的方法。

二、稍微复杂一点的情况就是对上面的情况进行一点修改:把代码层移到某一个mc中,如图2。此时,因为在他们的内部两个mc的实例名称是不可用的,所以不可以在一个mc中直接引用另一个mc。但是由于他们共享一个容器所以我们可以通过这个父容器在mc内部获得另一个mc的引用。具体地,比如我们将代码层写在mc1中,那么我们首先要在mc1中获得父容器的引用:

var _parent:Object=parent;

然后再或得对另一个mc的引用

var _mc2:MovieClip=_parent.mc2 as MovieClip;

这样就可以调用相关的方法了。

值得注意的是,如果我们只是想获得mc2中的一些数据,那么可以不用对他进行类型转换。就像我们在获得父容器的引用时也没有对其进行类型转换一样,因为我们获取父容器对象引用的目的只是想要得到mc2这个数据。

三、其他的更复杂的情况都是在前面两种情况的基础之上增加两个mc的深度构成的。深度的增加实际上只是增加了我们在获得共享容器对象的引用时要写的parent数量以及在获取另一个mc对象时所要写的mc父级容器对象的数量。类似的代码如下

var _parent:Object=parent.parent.parent.…….parent;

var _mc2:MovieClip=_parent.a.b.c.d…….mc2;

 

当然,在有多层嵌套关系时,将代码层的位置稍作改变,我们可以构造出其他一些情况,如图4,但是这些 并没有本质的不同,不同之处只在于 parent 数量和abd的数量不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值