这个问题的解决方法涉及将来很多类似问题的解决,那就是如何在Director中使用activex技术。很奇怪的是这种技术在Director中的使用并不多,似乎没有受到重视。我最近在制作一张光盘中使用了这种技术。实际证明这种技术很有效,当然你得在程序的开头编写提示用户安装acrobat reader的代码。 Director很多功能需要通过购买第三方的xtra实现,.通常这些xtra都很贵。比如使用pdf xtra。但是避开购买pdf的xtra,通过使用activex,你完全可以将acrobat reader的所有功能集成到Director中来,因为免费发放的acrobat reader中包含了一个activex控件。在安装完毕后这个控件自动注册。 activex 具体解决方法如下: 在Director中引入acrobat reader activex控件。 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脚本中即可 在客户机上可能要先进行判断客户机上有没有安装播放器:
先检测acrobat,如果没有安装就安装,如果安装通过调用打开pdf文件。
global keyList
on mouseUp me
set keyList = ActiveXControlQuery("{CA8A9780-280D-11CF-A24D-444553540000}")
if keyList <> -1 then open "s/AdbeRdr60_chs_full.exe"
else open the moviepath & "pdf\soshow.pdf" with the moviepath &"reader\Reader\AcroRd32.exe"
end if
end 注:activex对象总是直接写屏的,它的direct to stage总是设置的,这使得它超越Director通道的安排次序,总是在最上面。
|