恩,对于with,不知道各位flasher们是一个什么样的了解。其实,with从理论上并不是一个非常重要的语句,没有with,很多功能照样可以实现,因为with本身并不负责创建、回收任何SWF中的资源。
然而,with的出现却大大方便了我们设计人员。代码中的with能让我们更加清晰的对特定的MC进行管理。
比如,在一段复杂的逻辑控制中要对mc1,mc2,mc3进行操作,用with能让程序结构更加清晰。
with(mc1){
//....
}
with(mc2){
//...
}
with(mc3){
//...
}
而且with和能够返回MC实例的方法结合使用能让程序更加简化,例如
with(mc0.duplicateMovieClip("aw",1)){
//set the Properties for the mc-aw
}
然而,有一个问题一直是困扰众多Flasher包括我的。那就是this在with中的指向。
在with中,用_x,_y,_width这些属性可以访问本身mc的相关属性,可是惟独this无法指向自己。这是跟with语句本身的内核有关的。我曾经为此而郁闷很久,比如我要给这个mc增添一个变量,却不能用this.myVar = xxx;其实我们不必在意这些,因为根据mc本身的属性找到自己,也不是不可能。这里就要用到两个很容易被大家忽视的属性:_parent , _name。
只需要设置一个句柄指向自己就可以了,我们可以设置为
getThis = _parent[_name];
这样,getThis就等同于this了。对mc进行更多的操作可以用getThis了,例如增设变量可以用
getThis.t = 19;
而直接写“t=19”事实上是把这个值赋于了父级的mc。
有趣的是,用with再对getThis嵌套,仍然可以得到本身,这样可以写出无穷层次的嵌套。当然这只是为了说明getThis的作用,没有任何意义。