5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:
性别:秘密
最后登录:2007-05-13
http://flashhawk.5d.cn/
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2004/11/20 | 利用递归控制所有的对象
类别(AS程序设计)
|
评论
(3)
|
阅读(230)
|
发表于 08:50
利用第归控制所有的对象
偶然的机会看见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)。
0
评论
Comments
日志分类
首页
[190]
AS程序设计
[44]
互动实验室
[6]
flash杂项
[37]
互动设计
[1]
flash新闻
[25]
资源连接
[29]
心情日记
[36]
酷东西欣赏
[10]
PHP
[2]