:director常见问题整理5

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 14:52:48
Q: 在director中,如何改变分辨率以及屏幕刷新频率?
A: Three-m开发的HFCL_DisplayScreen.x32插件,可以改变分辨率,颜色深度,刷新率。

Q: 如何用Lingo语言调用“打开文件”和“保存文件”对话框?
A: fileIO xtra
1、displayOpen object me -- displays an open dialog and returns the selected fileName to lingo
2、displaySave object me, string title, string defaultFileName -- displays save dialog and returns selected fileName to lingo

Q: 如何改变一段文字中的某个文字或者某几个文字的颜色?
A: member(membernum).line[linenum].color=rgb(111,222,333)
member(membernum).char[1..2].color=rgb(111,222,333)

Q: 图标工具 制作替换?
A: http://soft.ttdown.com/SoftList/Catalog_107_SoftTime_Desc_1.html
这里有大部分的图标制作软件
大部分都是已经**过的

打不开的话
就直接进入 ttdown.com 搜索一下图标工具就可以了

Q: 如何解director中声音图像不同步的问题?
A: 在 Director 制作多媒体演示,由于图像、转场效果和动画的播放速率随机器的性能不同而导致播放速度的差异。但声音通道的配音和配乐却以原始的固定速率播放,这样就导致了演示中的声音和画面的同步问题,而且这个问题简单依靠在 Director 中调节帧速率是很麻烦的,也不容易在不同配置的机器上取得满意的效果。
  下面就以一个简单的卡拉 OK 歌曲的歌词显示与原唱同步的练习,来探讨如何将显示与配音同步。同样的道理,也可以参照它应用到其它类型的演示应用中。
  首先准备一首歌曲,要求使用 Wave 文件格式。歌曲的内容随意,但最好你能够找到歌词或能够默写出来,因为下一步要把它输入到 Director 中。
  在 Lingo 语言里,有一个特殊的事件:cuePassed 它的格式为:

   on cuePassed(channelID, cuePointNumber,cuePointName)
     statement(s)
   end

  (其中:channelID 为声音通道号;cuePointNumber 标记点编号;cuePointName 标记点名称),这些参数载本例中并没有使用。
  这个事件是 Director 声音通道中的 Wave 播放到声音通道的一个声音标记点时触发一次,我们就是利用对这个事件的检测来实现在 Director 中的声画同步。
  Director 本身没有为 Wave 文件添加标记点的功能,因此需要使用其他软件来完成这项工作。好在许多的声音编辑软件都能胜任这项工作,下面列出常见的几种:

  Sound Forge
  Cool Edit 2000
  Ulead Media Studio 中的声音编辑。

  下面我们就首先完成声音标记点的制作。
  运行 Sound Forge,打开要编辑的声音文件,使用 EditTool 工具,配和播放试听定位到第一句歌词的起始处(考虑到视觉和听觉的习惯,以及 Director 中处理和显示的延迟,应该将标记点从歌词的起始处前移 0.2 秒左右),选择菜单 Special \ Drop Maker 在此处创建一个标记点,也可以使用它的快捷键 M 快速建立一个标记点。

  使用同样的方法在每一句歌词的起始处都加入一个标记点,下图中的红色标记和虚线就是标记点的位置。Sound Forge 默认的标记点名称为 Maker xxxxx ,由于我们在 Director 中没有使用到标记点名称,可以认可它的默认值,也可以在标记点上按鼠标右键选择 Edit 为每一个标记点起一个自己喜欢或更有规律的名字。最终完成后仍使用原文件名保存,加入的标记点不会对声音文件的音质产生任何影响。

  考虑到各人使用的软件不同,下面简单说明在 Cool Edit 2000 中如何进行加入标记点的操作。运行 Cool Edit 2000 并打开要编辑的 Wav 文件,定位到添加标记点的位置,按 F8 键或参见下图中的说明,为声音文件添加一个标记点。

  也可以通过快捷按钮或菜单 View \ Cue List 打开标记点编辑窗口,直观地进行标记点的添加和编辑。完成以后将文件保存。
  至此,加入标记点的工作就完成了。

  运行 Director 在脚色窗口将编辑好的声音文件导入,然后先建一个文本脚色成员用于以后的歌词显示,文字的内容随意(下面要通过 Lingo 对文字脚色赋值显示),根据个人喜好设置好字体、颜色和大小。还可以导入一幅或多幅图像作为将来显示的背景。
  将声音脚色拖动到分镜表的声音通道1,设定其长度为标记点的总数+1(也就是有多少句歌词+1);把用于歌词显示的文本脚色成员放置到舞台的适当位置,设定它的起始帧为第二帧,结束帧与声音对齐;如果需要可以同时将演示背景图像设置好,但是要注意放置在底层。舞台的布置到此也完成了。
  如果你想知道前面加入标记点的操作有没有问题,可以在分镜表声音角色上面时间通道的任何一帧双击,打开帧速率设置面板。选择 Wait for Cue Point 并展开右边的下拉列表,从这里应该能看到加入的所有标记点(如下图),注意要按 Cancel 取消这一步操作。如果列表中只有 Next 和 End 两项,说明在声音中加入标记点的操作没有成功,可以参照前面的说明再重做一遍。

  接下来就是练习的核心部分 -- 脚本编写。双击第一帧的脚本通道打开脚本编辑窗口,先输入以下内容:

global geci
on beginSprite
  set geci = ["","青青杨柳风","悠悠桃花水", "小船儿漂来了", "俊俏的小阿妹", "眼睛水灵灵", "脸上红霞飞", "问一声小阿妹", "你要去见谁","要问阿妹去见谁呀", "阿妹心儿醉", "去见久别的情哥哥", "远方凯旋归", ...(考虑篇幅问题,删去了若干)]
end

on cuePassed
  go the frame+1
  member(1).text=geci[the frame]
end

on exitFrame
  go the frame
end


  配合 Alt 键拖动脚本,使它的长度与声音角色相同。在 Director 中播放,观察是否达到了预期的结果。下面来分析脚本的内容,脚本共有三个事件:
  1、on beginSprite 事件在第一次运行脚本时将歌词以数组(表)的形式赋值给一个变量 geci ,注意数组的第一个值为空,因为此时第一句歌词还没有开始(上面的脚本中省略了一部分歌词内容)。

  2、on cuePassed 是实现这个练习的关键,每播放到一个声音标记点该事件被触发执行一次,在这个事件里完成跳转到下一帧、配合 the frame 完成为显示歌词的角色成员赋值。在这里要注意member (1).text = geci [the frame] 要求建立的歌词文本角色成员的编号为1,如果你的练习不同的话,可以修改脚本中的数字使它们对应起来。
  3、on exitFrame 事件大家都明白,它使演示的播放停留在当前帧。
  这个练习到此就全部完成了。
  on cuePassed 事件的应用还有许多,这有待大家在使用中去探讨和发掘

Q: Director MX 2004中使用MIAW的体会?
A: Director MX 2004改变了使用MIAW的方式,还得我苦苦试了一下午。
在Director MX 2004中使用MIAW,应该这样写:
代码: miaw=window().new("bb")--bb.dir是一个Director文件
miaw.open()

如果不使用上面的语法,在Director10里面就会出错。但是,如果文件是使用Director9或者以前版本建立的,在Director10里面就可以使用老的语法:
代码: window("bb").open()

不过,Director10里面的MIAW确实是方便多了,例如,可以使用movie来控制Window中的影片
例如,有两个Director影片,aa.dir和bb.dir,那么,在aa.dir中打开bb.dir,就可以直接调用bb.dir中的member、sprite甚至是handler
代码: miaw=window().new("bb")
miaw.open()
_player.window["bb"]
movie.go("bb1")
--也可以这样写:
--window("bb").movie.go("bb1")

那么,要在bb中调用aa的内容,可以这么写:
代码: _player.window["stage"].movie.go("aa1")

同样的,用这种语法可以完全控制MIAW中的内容了。大家可以试试。
另一个改进,就是可以使用displayTemplate控制MIAW的风格
例如 
代码:--禁止在标题栏中显示最小化、最大化和关闭按钮miaw.titleBarOptions.minimizeBox=FALSEl
miaw.titleBarOptions.maximizeBox=FALSE
miaw.titleBarOptions.closeBox=FALSE