初级视频编辑室|草蜢非编论坛|初级视编室|草蜢视频编辑|会声会影|威力导演|电子相册

 找回密码
 加入初编室
搜索
查看: 1725|回复: 14
打印 上一主题 下一主题

[Director 多媒体爱好者] 浅谈在director中运用组概念

[复制链接]

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

跳转到指定楼层
楼主
发表于 2014-11-24 21:41:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
onekey onekey

在director的开发中,我们经常会遇到这样的情况,电影需要在程序运行的任何时刻弹出各种面板,工具条,对话框等.这个时候我们通常有两种方法解决:
第一:使用miaw的方式,这是很多人常用的方式,而且现在mx20004改善了miaw的控制,应该是很好的一种解决方案.只是低版本的director窗口之间通讯不是很方便,这种方式不是本文讨论的范畴.这里就省略不说了.
第二:直接在通道中摆放,需要显示时打开精灵通道的显示即sprite(psprNum).visible=1,关闭时将精灵通道的显示属性设置为0(sprite(psprNum).visible=0).这种方式比较容易理解,不用打开新的窗口,通讯也比较方便.
     但是由于在director中只有一个时间轴,所以有时候就是是一个简单的"确认面板",都需要要3,4个精灵来实现,这样就涉及到多个了精灵通道,比如说:"确认面板"的底板放在100通道,"确认"按钮在101通道,"取消"按钮在102通道.这样打开确认面板时,需要将100,101,102的visible设置为true,关闭"确认面板"时,需要将100,101,102的visible设置为false,这样如果需要控制显示和关闭的精灵太多,程序控制起来就不是很方便.而且如果这样的面板太多的话,甚至程序中还有其他的比如下拉条菜单这样占用用很多通道的组件存在的时候.整个控制就可能比较混乱,而且如果程序设计不好的话,甚至改动精灵的通道号都需要改写程序,非常的麻烦.
    再来谈谈"组概念"在director中的应用.
    在我的例子中,有四种水果,每种水平都有不同的数量了,它们在精灵通道中也是随便摆放的,我需要控制它们的显示与隐藏.
    在电影开始的时候,建立一个全局的列表MovieGroupList
global MovieGroupList
on preparemovie
  _movie.clearglobals()
   MovieGroupList=[:]
end
    在每个自己需要控制的精灵上添加行为setSpr
global MovieGroupList
property pName,pGroup
on getpropertydescriptionlist me
  tCurrentSpr=_player.currentSpriteNum
  plist=[:]
  setaprop plist,#pName,[#comment:"请输入精灵名称",#format:#string,#default:sprite(tCurrentSpr).member.name]
  setaprop plist,#pGroup,[#comment:"请输入精灵所属的组",#format:#string,#default:"Non"]
  return plist
end
on beginsprite me
  getGroupMsg(me)
end
on getGroupMsg me   
  tMovieList=getaprop(MovieGroupList,symbol(me.pGroup))
  if voidP(tMovieList) then
    tlist=[me]
  else
    tlist=tMovieList.duplicate()
    tlist.append(me)
  end if
  setaProp MovieGroupList, symbol(me.pGroup),tlist
end
on setVisible me,pGroupId,pboolean
  if pGroup=pGroupId then
    sprite(me.spritenum).visible=pboolean
  end if
end
在属性设置面板中,如果这个精灵是属于apple的,就设置为appl就可以了.同理,如果是banana,就设置为bana.

这样,当我们需要控制一个组的显示或关闭时,比如说appl组的,我们就只需要使用
sendallSprites(#setVisible,"appl",1)或sendallSprites(#setVisible,"appl",0)就可以了
同理如果要控制banana组的显示或关闭,就使用
sendallSprites(#setVisible,"bana",1)或sendallSprites(#setVisible,"bana",0)

当然,因为我们在beginsprite的时候其实已经收集的所有的精灵通道信息.写一个全局函数setGroupvisible
on setGroupvisible pGroupId,pBoolean
  tPropertyList=getaprop(MovieGroupList,symbol(pGroupId))
  tBoolean=pBoolean
  if voidP(tPropertyList) then
    return 0
  else
    repeat with i=1 to tPropertyList.count
      sprite(tPropertyList.spriteNum).setVisible(pGroupId,tBoolean)
    end repeat   
  end if
end
这样,我们就不必要使用sendAllsprites向所有的精灵通道发信息.而使用下面的形式就可以了.
控制苹果组的显示和关闭
setGroupvisible("appl",0)或setGroupvisible("appl",1)

当然,我们在这里只对特定的组进行了关闭和显示的控制的讨论,作为抛砖引玉之用.你完全可以利用它来做更多的事情.


点评

早上好!  发表于 2024-12-10 06:58
楼主热帖
河边已是一首歌
回复

使用道具 举报

433

主题

1万

帖子

13万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章活跃会员帅哥会员百帖纪念荣誉勋章论坛万元户

沙发
发表于 2014-11-24 21:46:33 | 只看该作者


这效果如何?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入初编室

x

评分

参与人数 1金钱 +10 收起 理由
五星上将 + 10 很给力!

查看全部评分

早上好!

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

板凳
 楼主| 发表于 2014-11-24 21:49:58 | 只看该作者

没有你的头像帅
河边已是一首歌

433

主题

1万

帖子

13万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章活跃会员帅哥会员百帖纪念荣誉勋章论坛万元户

地板
发表于 2014-11-24 21:52:52 | 只看该作者

看看能不能找个类似的,长期使用的最好。
早上好!

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

5#
 楼主| 发表于 2014-11-24 21:54:12 | 只看该作者
sdtazxf 发表于 2014-11-24 21:52
看看能不能找个类似的,长期使用的最好。

我找一下
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

6#
 楼主| 发表于 2014-11-24 21:54:14 | 只看该作者
sdtazxf 发表于 2014-11-24 21:52
看看能不能找个类似的,长期使用的最好。

我找一下
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

7#
 楼主| 发表于 2014-11-24 21:54:17 | 只看该作者
sdtazxf 发表于 2014-11-24 21:52
看看能不能找个类似的,长期使用的最好。

我找一下
河边已是一首歌

206

主题

4527

帖子

7万

积分

初编室元帅

Rank: 14Rank: 14Rank: 14Rank: 14

活跃会员帅哥会员百帖纪念荣誉勋章论坛万元户

8#
发表于 2014-11-24 22:02:35 | 只看该作者
谢谢楼主提供分享!!

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

9#
 楼主| 发表于 2014-11-24 22:15:33 | 只看该作者
sdtazxf 发表于 2014-11-24 21:52
看看能不能找个类似的,长期使用的最好。

扣了一张

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入初编室

x
河边已是一首歌

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

10#
 楼主| 发表于 2014-11-24 22:24:56 | 只看该作者
sdtazxf 发表于 2014-11-24 21:52
看看能不能找个类似的,长期使用的最好。

链接: http://pan.baidu.com/s/1eQvOFzc 密码: rpy9


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入初编室

x
河边已是一首歌
您需要登录后才可以回帖 登录 | 加入初编室

本版积分规则

手机版|小黑屋|初级视频编辑室

GMT+8, 2024-12-26 02:33 , Processed in 0.124658 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表