利用第归控制所有的对象
偶然的机会看见luar写的书中有一节是介绍,在游戏中需要暂停控制所有的对象的方法,那是在他的第一本书中,他是这样的写的,是在flash MX as1.0环境下
MovieClip.prototype.stopAll=function()
{
for(var i in this)
{
this[i].stop()
}
}
在主时间轴的一个按钮上加上如下代码:
btn.onRelease=function()
{
stopAll()
}
其实他是省略了_root,
完整的应该如下
btn.onRelease=function()
{
_root.stopAll()
}
但是这样也不是完全暂停,只是暂停了_root对象中最上层的MC,但是MC中又有MC就不能控制了。
下面我用递归的方法实现所有的MC暂停
MovieClip.prototype.stopAll=function()
{
for(var i in this)
{
this[i].stop()
this[i].stopAll()
}
}
就是在一行this[i].stopAll()就OK了,这就是用了递归方法。
继续
MovieClip.prototype.playAll=function()
{
for(var i in this)
{
this[i].play()
this[i].playAll()
}
}
这样在游戏中就会让所有的MC暂停和播放了
在as2.0中怎么实现呢
看下面代码
class CtrlAll
{
public static function stopAll(mc:MovieClip)
{
for(var i in mc)
{
mc[i].stop()
CtrlAll.stopAll(mc[i])
}
}
public static function playAll(mc:MovieClip)
{
for(var i in mc)
{
mc[i].play()
CtrlAll.playAll(mc[i])
}
}
}
我写了个静态类,把MC对象用参数传进去就OK了。
如果你想暂停主时间轴上的所有MC,就这样用:CtrlAll.stopAll(_root)。
偶然的机会看见luar写的书中有一节是介绍,在游戏中需要暂停控制所有的对象的方法,那是在他的第一本书中,他是这样的写的,是在flash MX as1.0环境下
MovieClip.prototype.stopAll=function()
{
for(var i in this)
{
this[i].stop()
}
}
在主时间轴的一个按钮上加上如下代码:
btn.onRelease=function()
{
stopAll()
}
其实他是省略了_root,
完整的应该如下
btn.onRelease=function()
{
_root.stopAll()
}
但是这样也不是完全暂停,只是暂停了_root对象中最上层的MC,但是MC中又有MC就不能控制了。
下面我用递归的方法实现所有的MC暂停
MovieClip.prototype.stopAll=function()
{
for(var i in this)
{
this[i].stop()
this[i].stopAll()
}
}
就是在一行this[i].stopAll()就OK了,这就是用了递归方法。
继续
MovieClip.prototype.playAll=function()
{
for(var i in this)
{
this[i].play()
this[i].playAll()
}
}
这样在游戏中就会让所有的MC暂停和播放了
在as2.0中怎么实现呢
看下面代码
class CtrlAll
{
public static function stopAll(mc:MovieClip)
{
for(var i in mc)
{
mc[i].stop()
CtrlAll.stopAll(mc[i])
}
}
public static function playAll(mc:MovieClip)
{
for(var i in mc)
{
mc[i].play()
CtrlAll.playAll(mc[i])
}
}
}
我写了个静态类,把MC对象用参数传进去就OK了。
如果你想暂停主时间轴上的所有MC,就这样用:CtrlAll.stopAll(_root)。
回复Comments
作者:
{commentrecontent}