问题:为什么director总是报告“where is ......”(找不到链接的媒体文件,如mov、wav文件)?
答:很多人以链接方式导入的媒体文件(例如quicktime、wav、aiff、avi等文件)在变换了路径后会出现找不到媒体文件的情况。
解决方法很简单,那就是使用the ssearchpaths这个系统属性列表。the searchpaths告诉director到哪里去找媒体文件。通常我们将媒体文件以一种层次结构方式组织在光盘上,例如projector文件放在光盘的根目录下,声音文件放在sounds目录下,视频文件放在video目录下。
当director加载媒体文件的时候.,它会首先查看媒体文件最初的连接地址,如果没有找到该文件,会接着在电影文件的当前目录下查找该媒体文件,如果还是没有找到,它就遍历the searchpaths中的所有路径。the searchpaths中的每一个项目就是一个路径。因此解决方法就是在每个director电影文件的movie script中加入句柄:
on startmovie
append the searchpaths, the moviepath&″video″
append the searchpaths, the moviepath&″sounds″
end
the moviepath返回当前电影文件的路径名,例如果光盘是d盘,电影文件放在光盘根目录下,那么the moviepath就返回d:/,和“video”结合就成了d:/video,合并后的路径通过append附加在the searchpaths后,director就知道到什么地方查找该文件了。
问题:我希望director电影文件放在硬盘上(考虑到速度问题),而媒体文件放在光盘上,我该如何做?
答:这种做法在国外是很普遍的,因为director制作的文件通常都非常庞大,放在光盘上运行的确很慢。国内制作的光盘大多数将电影文件放在光盘上,再在光盘的根目录下放一个autorun.inf,当用户插入光盘后,就进入director电影文件漫长的加载过程。因此国外的这种做法很值得推荐,但是并不是所有人都喜欢这种做法,因为这种方法需要制作一个安装程序将director电影文件安装到用户的硬盘上,对于用户来说,这种做法不如使用autorun更直接。
解决方法同样涉及路径问题,只是你必须判断用户的光驱符号,然后将它和子目录结合为新路径,附加到the searchpaths属性列表(具体实现见附录)。
问题:如何在director中使用pdf文档?
答:这个问题的解决方法涉及将来很多类似问题的解决,那就是如何在director中使用activex技术。很奇怪的是这种技术在director中的使用并不多,似乎没有受到重视。我最近在制作一张光盘中使用了这种技术。实际证明这种技术很有效,当然你得在程序的开头编写提示用户安装acrobat reader的代码。
director很多功能需要通过购买第三方的xtra实现,.通常这些xtra都很贵。比如使用pdf xtra。但是避开购买pdf的xtra,通过使用activex,你完全可以将acrobat reader的所有功能集成到director中来,因为免费发放的acrobat reader中包含了一个activex控件。在安装完毕后这个控件自动注册(具体实现见附录)。
问题:如何在director中播放mpeg文件?
答:在director中播放mpeg文件的方法主要有三种:
1.使用mci,这种方法和director的集成不好,不建议采用。
2.使用xtra与director集成,但是需要额外购买。
3.使用activex与director集成,不需要额外购买。
在这里我们介绍第三种方法。
其实这个解决方法和上面读入pdf的方法相同,在设置和编程上稍有出入。
具体解决方法如下:
在director中引入acrobat reader activex控件。
选择insert→control→activex。
然后在出现的对话框中选择“activemoviecontrol object"。
单击ok按钮后进入第二个activemovie activex属性对话框。
滚动属性标签中的属性直到属性filename名出现。单击按钮“..." (新的版本可能不包含按钮“...",你可以使用lingo),然后单击"browse"按钮去选择要播放的avi或mpg文件。将此控件插入到director中。
将这个刚刚插入的activex控件从角色库中拖放到舞台上。
点击director中的播放按钮,就可以看到mpeg文件的播放了。
也可以通过lingo编写程序访问此控件,例如run是这个控件的一个方法。也可以在一个按钮中附上下面的代码:
on mouseup
run (sprite 1)
--假设控件所在通道为1
end
注:activex视频对象总是直接写屏的,它的direct to stage总是设置的,这使得它超越director通道的安排次序,总是在最上面。
问题:什么是shockwave,什么是tech.sina.com.cn/introduction/focus/flash.html target=_blank>flash,为什么shockwave比flash提供更高的帧速率?
答:shockwave和flash是macromedia提供的两种网上流媒体播放技术。flash是一种网上矢量动画技术并带有一定的交互编程功能。shockwave是一种更加复杂的播放技术,由于它提供了强大的、可扩展的脚本引擎,使得它可以制作聊天室、操作html、解析xml2文档、控制矢量图形,两者都是流媒体技术。但是flash启动非常快,而shockwave启动没有flash快。flash是用flash软件制作,文件后缀名是swf(shockwave flash format),shockwave是用director制作,文件后缀名是dcr。
帧速率决定了媒体可以播放的最高速率,shockwave和flash的实际播放速率通常由于播放所需的计算量过大而达不到指定的播放率。二者的内部引擎不同,shockwave的帧速率通常在30~60之间,而flash的帧速率在7~12之间。shockwave本质上使用一个高性能的点阵复合引擎,而flash实质上是一个实时矢量到点阵的渲染引擎。通常矢量到点阵的渲染要比简单的将点阵图像复合更加耗时,这就是为什么shockwave可以比flash提供更高的帧速率。
一句话:flash是一个矢量动画软件,而director制作的shockwave更多是基于点阵的动画。但是很多人并不清楚这些,致使在flash中嵌入大量的位图,使得文件很大。.也有的人总觉得flash比shockwave慢,却不明白个中原因。
附录1在director中使用pdf文档的具体实现
1.在你的光盘中放入一个很特殊的文件(名字尽量不要和可能出现在任何盘的根目录下的文件重名),比如你公司的名字(mycorporation.txt)。
2.编写判断光盘驱动器的函数:
on checkdrive uniquefile
repeat with i = 67 to 90 --字母a到z的循环
set drive = numtochar( i )
--将a到z的ascii码转换为字符
set thispath = string(drive&″:/″&uniquefile)
set myfile = new(xtra″fileio″)
--创建fileio xtra的实例
openfile(myfile, thispath, 1)
--打开指定的文件
if status(myfile) = 0 then
--如果打开文件成功返回0
set myfile = 0 --从内存中删除该实例的指针并返回drive&″:″
exit
end if
end repeat
set myfile = 0
--从内存中删除该实例的指针
alert″请插入正确的光盘″
end
3.编写你的movie script脚本:
on startmovie
mycd = checkdrive(″mycorporaion.txt″)
append the searchpath, mycd&″/video″
append the searchpath, mycd&″/sounds″
end
这样就可以在光盘上放置媒体文件,把director电影文件放在硬盘上,而不必担心会出现问题了。
附录2电影文件放在硬盘上、媒体文件放在光盘的具体实现
1.安装acrobat reader(为了自动注册acrobat reader activex控件)。
2.在director中引入acrobat reader activex控件。
选择insert→control→activex。然后在出现的对话框中选择“acrobat control for activex"。
单击ok按钮后会进入第二个acrobat reader activex属性对话框。
如果你知道pdf文件的路径,可以直接在该对话框中指定。所指定的路径是绝对路径,在此控件的src属性中不能指定相对路径。
单击ok按钮后则关闭属性对话框,这个时候你已经将activex控件插入到cast角色库中。将这个刚刚插入的activex控件从角色库中拖放到舞台上,可以尽量拉伸这个sprite直到你希望的大小。
如果当前的director电影处于播放状态,你就会看到所指定的pdf出现在舞台上。
但是这种方法不实用,除非你用硬盘播放你的演示程序。通常我们希望使用相对路径(相对电影文件所在的目录下的子目录中放置pdf文档)。那么你不必在此控件的src属性中设置任何参数,可以使用lingo设置该控件的src属性。具体程序如下:
在mouseup或enterframe等句柄中编写如下的程序:
on mouseup me
sprite(1).src = the moviepath&″mypdf.pdf″--假设acrobat控件放在1通道中
end
on exitframe me
sprite(1).src = the moviepath&″mypdf.pdf″
end
将如上的句柄放在acrobat控件所在sprite的sprite脚本中即可
新闻热点
疑难解答