如果你想快进只要把sprite(x).goToFrame(a-1)换成sprite(x).goToFrame(a+1)就可以了。
*问:用SCROLLING方式出现的文本,他的滚动条是自动移到最后一行。有没有办法让他一出现就到第一行。 A:源代码如下: on beginsprite me
sprite(me.spritenum).member.scrolltop=0 end
Q:家如何让鼠标指针进入一个按钮上的时候,让它跳转到某个帧上或者一个标记上自动播放。谢谢大家了。
A:在一个按钮的Behavior Inspector中Events设mouseEnter的Actions为Go to frame或Go to mark。
*问:有一段自适应屏幕大小的LINGO,请问要放在那里才能发挥作用呀? A:放在preparemovie和startmovie句柄中都行。
*问:在Director中的Lingo语言中,有没有这样一个函数或语句,当点击某一个按钮或精灵时,其它一些帧上的脚本即程序就被屏避,不起作用了。
A:你可以设置若干个全局变量,利用变量的值控制阵脚本是否继续运行。
Q:怎样让avi文件播完之后自动跳转到另一个dir文件?
A:多数情况下AVI都是有声音的,这样你就可以通过判断声道是否忙来间接判断AVI文件播放完了没有!
*问:请问我往Director中导入MIDI为什么经常报错,能不能用LINGO调用MIDI呀? A:如果不想用xtra的话,可以使用MCI set midifile = \mci \
mci \mci \用director不好控制 mci \
关于最后两个问题另种解法:
1: 判断当前播放的时间与AVI文件的长度,以决定跳转与否,X为AVI通道号 on exitFrame me
if the movietime of sprite X < the duration of (the member of sprite X) then go to the frame
else 跳转 end if 2:
使用QuickTime 将midi转为mov格式
Director文件的保护与还原
Director文件的保护与还原 donlee
作为广受多媒体开发人员钟情的开发平台,Director可以根据开发人员的需要输出多种格式的文件,其中最常用的格式当属dir文件以及加以保护的dxr文件,后两种格式的文件是用于播放的,不可再用Director编辑,一般最终作品都做成这样的格式。但在我们在实际开发过程中,往往由于备份文件损坏或出于学习观摩的目的等种种原因,有必要打开这类文件作为参考或继续编辑。本文从技术的角度出发,完全依靠Director自身提供的工具,对dxr文件的保护与还原手段作一探讨,所有讨论基于Director 8.0。 一、保护
Director在其IDE环境可通过逐级选择菜单??Xtras??->??Update Movie...??,来把文件改为dxr格式,或通过publish输入为dcr格式的文件,不允许再被Director打开或编辑,以此来保护作品不被篡改。这是Director所提供的最基本的保护手段。 二、还原
不知出于何种考虑,Director所内嵌的lingo语言中有savemovie、save castlib两个保存movie和cast的命令,而且这两个命令对于dxr和dcr也有效!正是这两个命令,为还原被保护的文件大开方便之门。由于我们不能在Director下直接打开这两种文件,于是我们想到了MIAW,把它们通过MIAW打开,Director允许使用tell命令向miaw发送消息,因而我们尝试用这种途径来遥控dxr保存成可以再编辑的dir文件。作法如下: 新建一个movie,编写一个movie script,内容为: on outputdir input output miaw=window(input)
tell miaw to savemovie output forget(miaw) end
假设我们要打开的文件是“D:\\Locked.dxr”,希望解除保护并另存为“D:\%unlocked.dir”,则执行此movie,在message窗口中输入outputdir ??D:\\Locked.dxr?? ??D:\%unlocked.dir??,然后我们察看D盘根目录,将会在那里发现unlocked.dir文件,这个文件可以用Director打开,所有的score、member安排与原文件毫无二致,但其中所有的script内容均为空白。
正如把李白的诗翻译成英文,再由英文译成的中文已完全见不到诗仙的影子。由于转换成dxr格式时,movie内的script都经过编译,转换成由计算机执行的代码。所以用savemovie也不可能得到原来文本格式script,下面谈到的所有还原手段对此都无能为力。
目前在Director各论坛上大受青睐的还原工具dirOpener实际上完全基于以上思路来完成的,这个小工具也的确是用Director来制作的。但dirOpener具有一个很好用的界面并补充了一些关于光标和不规则窗口的“秘技”,这为Director初学者提供了一些方便,但对于有一定lingo编程基础的人来说,它的能力实在有限,不如自己做一个更强的opener,至于理由,请看“再保护”。 三、再保护
通常开发人员希望全面保护自己的作品,即使是score也不愿被他人窥视,怎样防止别人用savemovie之类的手段来还原呢?还是用lingo!我们可以写一个处理程序,当movie接收到savemovie命令时不保存movie,而是执行我们所定义的代码,对于save castlib也做同样处理。下面的例子是方法之一: on savemovie quit end
on save castlib quit end
如果movie script含有以上内容时,则当movie接收到savemovie命令时,不会执行保存,而是退出集成环境或projector,如果企图用dirOpener还原这样的dxr文件,结果将是没有任何dir或cst文件输出,并且dirOpener自身也被退出,这是由quit命令的特点决定的,既然dirOpener是用Director制作的,自然难以逃此噩运,有此软件的朋友一试便知。 四、再还原
为了解除用上述savemovie方法施加的保护,我们再次仔细研究一下lingo,发现可以用lingo在runtime动态地增加或删除member,或修改现有的member的内容。于是我们有了这样的想法,先检查一下movie中所有的member,如果是script,则删除它,自然savemovie之类的保护手段也不存在了。前面已经讨论过,还原出来的dir总是丢失所有script内容,所以在这里删去它们也不会带来更多的遗憾。解除所有script作用的代码(包括保存新的movie部分)如下:
FileToBeOut=the file name to be output --modify it in your scripts miaw=window(FileToBeOut) tell miaw
repeat with i=1 to the number of castlibs
repeat with j=1 to the number of members of castlib i if member(j,i).type=#script then
if member(j,i).scripttype=#movie then
member(j,i).scripttext=??\\?? --script内容成为空白,但member名称会保留 --或者 member(j,i).erase() --整个member被删除 end if end if
end repeat
end repeat
--上面的两层循环查找所有cast中的所有member,并解除所有movie script的作用 savemovie ??输出文件名\\?? --为输出的文件命名 end tell
forget(miaw)
至此,基于lingo的保护完全失效。我想在Director的下一个版本中,Macromedia应该不会保留这种双手互搏之术了。
如果朋友们有兴趣,可以在此基础上包装一个好界面,自己做一个新的dirOpener。如果希望方便使用,可以用fileio xtra的displayopen和displaysave函数,来选择要输入、输出文件的位置及文件名。至今我还是不能理解为什么作为免费软件的dirOpener要捆绑大而贵的三个net相关的xtras和directOs。
这种方法并不是万能的,尤其对于dcr文件,上面的手段往往无所施其技。
Director教程 一、Director介绍
Director是全球多媒体开发市场的重量级工具,据统计,它在美国专业CDROM开发市场占据85%以上的份额。由于它不仅具备直观易用的用户界面,而且拥有很强的编程能力(它本身集成了自己Lingo语言),正逐渐成为国内多媒体开发者的主流工具。
目前Director的最新版本是在2000年2月发布的8.0版,全称是:MacromediaDirectorShockwaveStudio8.0。请注意Shockwave这个词(Shockwave在7.0版首次出现在Director的产品命名中),这表明Macromedia不仅把Director定位到CDROM/DVDROM的开发,而且准备在互联网多媒体的开发上保持霸权地位。
首先我们看一下Director8增加了哪些功能,对于广大中文用户来讲,首先值得一提的是Director8的Library增加了对双字节的支持,尝试过Director7的人肯定有过这样的经历,那些看起来让人羡慕不已的Library,拖到演员上就报错,其主要原因是它的Library只能支持单字节,解决的方法是通过手动更新里面的换行标识或者购买中日韩专用Library。现在中文用户再也没有这个问题了,放心大胆地使用最新的可视化编程方式吧。
当然,Director8功能增强部分才是最主要的,主要表现在下面这些地方:
属性面板 这是Director8新增的一个面板,或许是受到Dreamweaver的启发,现在在Director中也可以通过属性面板修改Director中大部分元素的属性。当然,和Dreamweaver一样,属性面板也是智能的,对于一个Director电影来说,属性面板列出的是整个电影的属性。例如电影的大小。对于一个Sprite来说,列出的属性为Sprite的属性,诸如位置,角度等等;对于一个Cast来说,列出的属性又变成了cast属性。所有元素的重要属性都能在这个面板中进行设置。这样的改进还有个好处就是彻底精简了时间轴。时间轴上那些罗嗦的参数全部整合到了属性面板中。哇,世界清静了??
改进的Cast库 角色库是Director的重要组成部分。传统的角色库以小窗口的方式出现,有时占用了大量的桌面空间。现在新增的ListView方式,可以使角色库中的元素以列表形式出现,可以方便快速调用元素。
可放大的舞台 按Ctrl+”+”或者Ctrl+”-“,可以像在Photoshop中一样放大缩小舞台。这样局部调整的时候就可以派上用场了。
连接外部脚本: 现在Director可以使用外部的脚本了,使用外部脚本有以下好处:首先是可以在你的产品以外存储脚本,这样管理源代码就有了更大的灵活性;其次是使用工业标准的第三方源代码控制系统,如MicrosoftVisualSourceSafe,管理项目脚本(projectscripts),这样可以让多个作者编辑脚本、管理版本控制和check-in/check-out脚本。当然,最迎合用户的是可以在你最喜欢的文本编辑器或脚本编写环境中进行编辑,来提高工作效率。
自定义的辅助线: 在Director8中可以自由的在舞台上添加,并且修改辅助线,这一招是从哪学来的,不用说大家也知道——Photoshop!
锁定Sprite: 当在舞台上有数十甚至上百个演员时,很容易点错演员,改动了它的位置,这时可以选择菜单Modify->Locksprite,将Sprite锁定在舞台上以防不慎误操作修改。
增强的Lingo: Lingo是Director的面向对象语言,Director8的Lingo中包括了800多条命令,它们用来控制图象、声音、矢量形状、