1、 但在使用此插件的时候有两个问题必须注意,否则可能会 第一: 应确保应在File菜单的Preferences-General中勾选Animate in Back ground,否则运行程序时将不会播放影片,而是停在一帧上止。 第二:Director 7.02存在一个路径搜索方面的Bug,如果媒体文件和运行程序不在 同一目录下的时候,就会发生找不到文件的情况,必须在主程序的相同目录中包含一个名为Lingo.ini的文件,容如下: on startup 添加文件搜索路径,添加在主程序目录下的media目录 的方法如下:global tbsearchpath set tbsearchpath= ap
2、pend(tbsearchpath, the applicationPath & media) end startup 只要加上这个文件就没问题啦!尽情体验DirectMedia的强大功能吧!Director 里几个save命令的区别9分 575为什么director 里关于save的命令有三个,这三个到底有什么不同,我该选择哪一个来save我的文件? Director 里save , save as 和 save and compact 的区别 好多朋友问过这个问题,为什么director 里关于save的命令有三个,这三个到底有什么不同,我该选择哪一个来save我的文件? 其实回答这个问题
3、还得先了解一点director的文件结构,一个Director movie文件包含的主要信息是cast, 和score,cast含有所有电影所需的原始资源 而score则负责控制电影的播放流程,可见cast 对文件的大小贡献最大,对movie最后的整体表现影响也非常大。 通常多媒体开发人员都会考虑电影优化的问题,例如,导入优化过的图形文件和视频文件,不过更加常见的情形是导入了很多资源,实际上并没有完全使用,还有就是导入时, 是按照开发者的需要来导入,并非是movie播放的需要,cast members在cast窗口里的位置和次序并不是呈现优化的状态。 这些都是开发者需要解决的问题。头一种情形,
4、可以find unused members, 然后delete; 第二种情形就要用到下面的save and compact命令了。save: 保存你所有自从上次save后的改变,改变的信息是加在原有的版本之上,换句话说,如果你一直不断的save, 文件会越来越大,即使你删除了某个cast member,然后save, 文件还是不会减小,适用于编辑状态。 我常常告诉学生,ctrl + S是世界上最便宜的保险政策,作为一个职业的开发者,每五分钟 ctrl + S一次,应该是下意识的举动。save as: 这个大家都知道,当你新保存一个文件的时候,用save as。不过对director来说,这个命
5、令还意味着,保存文件之前,先优化文件,例如同样是上面列举的情形,删除的cast members一定会在文件的大小上显示出来。 这个命令执行后,通常还意味着,你有了两个不同版本的movie文件。 有些情形下,director拒绝工作,save as, 再保存一次为新文件,就会为你解困。 save and compact: 这个指令和save as一样,先优化,再保存,和save as 不同的是,保存后自动删除旧文件,只留下最新的优化过的文件。对于shockwave 和 CD-ROM的开发来说,这个指令的重要性是不言而喻的。publish as shockwave之前,必须执行一次save and
6、 compact。 而如果有什么意外发生,无法使用sava指令的时候,save and compact就成了不可或缺的救急措施。 最后简单的介绍一下director文件优化的次序: 首先被写入文件的是一个director文件的文件头部分,也就是说将要首先载入RAM的容是关于cast, score的纪录以及编译好的lingo script, 这些容通常会始终保留在RAM中,而且占用的存空间很小。 接下来就是真实的媒体容,嵌入式的媒体cast members先载入,优化时,这些members按照他们在score窗口出现的先后次序重排,尽管你在cast 窗口没有办法看到重排的次序,但当你用save
7、as 或 save and compact 的时候,它是实实在在的发生了,也就是说score中的第一个帧所需要的所有的cast members都会先被写入文件。 最后director会检查所有还没有写入的嵌入的媒体members, 这次是按照它们在cast 窗口里的次序写入文件。 例如按钮的over 和down 状态的members, 他们通常是被lingo来调用而不是直接显示在score窗口里的。 与此类似的情形还有puppetSound所调用的声音members。 还有一个小窍门,如果你有一些cast libraries, 需要和你的项目里的多个movies都保持外部连接的方式,那你不必要
8、每一个movie都使用sava and compact, 你可以使用菜单栏 Xtras - update movies, 选择update movies, 这好像是一个save and compact 的批处理命令。Director中的调色板541Director中调色板索引色必须是第一个色彩是白色#FFFFFF,最后一个色彩是黑色#000000,这样的调色板才能被导入到director中。 Director中调色板索引色必须是第一个色彩是白色#FFFFFF,最后一个色彩是黑色#000000,这样的调色板才能被导入到director中。 如果一个图片是带有调色板的,但调色板不符合上面的规律,那
9、么将不能被导入到director中,这个时候导入提示框palette 选项将是灰色的,并且显示(Image has invalid palette)。1.怎样创建自己的调色板 打开photoshop,新建一个空白文件,把图片的模式改变成indexed color. 点 image- mode - indexed color ,不改变里面的默认值,确定。 之后,点image- color table 出现下面的窗口 这里需要确定的是红色圈中的两个地方颜色需要是第一个为白色,最后一个为黑色。其他格的颜色可以自由搭配,点其中的小格,设定颜色。配置好颜色后,点 save 保存,这样的调色板就可以在di
10、rector中导入了。2.怎样导入带调色板的图片文件 一个带调色板的图片,也需要确定图片所带的调色板是否符合上面的规律。 真彩图片转化成 256 色的时候,可以先手动调整调色板索引色,让他符合上面说明的标准。 点 image- indexed color , 点forced 中的 custom 选项,出现forced colors窗口,调整窗口中的第一格,让他为白色 #ffffff,点OK. 然后按照中说明调整color table中最后一个颜色,让他是黑色的。 如果图片已经是indexed color 的模式,可以先转成 rgb 模式,然后再作上面的转化步骤。director 应用技巧7分
11、833director 应用技巧教程。 1、设置movie,使之自动缩放以适应屏幕大小 A:使用如下script:on preparemovie (the stage).rect=(the desktoprectlist).1 (the stage).drawrect=(the desktoprectlist).1 end 2、制作带阴影效果的text field可以作出阴影效果,但在field中应用中文容易死机,我们可以用一个text member但多个sprite,各sprite位置稍稍错开,并适当设置其blend即可。灵活使用之可以得到动态的和彩色的阴影。缺点是数量过多会拖累速度。3、中
12、文菜单 可以用installmenu的标准方法生成中文菜单,但字体、字号设置全部无效。4、filmloop播放问题:在一帧判断一个filmloop播放完毕,再继续播放下一帧。frame script中含有以下代码,以实现定格:on exitframe me go the frame 再把以下behavior拖到filmloop sprite即可:-但用prepareframe不行?!tell sprite(me.spriteNum) if the frame = the lastframe then ploopcnt = 1 end if end tell if ploopcnt then g
13、o next-或改为其它命令 5、对filmloop的控制。以下behavior的功能是用于一个filmloop sprite,点击暂停,再次点击则继续。property ppause,pframe on beginsprite me ppause=false pframe=1 on mouseup me ppause=not ppause if ppause then tell sprite(me.spriteNum) to pframe=the frame if pframe=1 then tell sprite(me.spriteNum) to go to the lastframe e
14、lse tell sprite(me.spriteNum) to go to pframe-1 由此我们也可以知道,我们无法使filmloop的播放速度快于movie,但可以用上法的变通来减慢它。补充说明:tell sprite.用法类似tellwindow,但尚未见于正式文档,我使用至今,尚未见其出错。6、在projector用lingo关闭计算机(用于Windows9X),主要用于触摸屏等无人值守的情况等。无论此时计算机是否有打开的程序或窗口,使用下面的lingo语句可直接关机:(仅限于projector) open c:windowsrundll.exe user.exe,exitwin
15、dows 若要重新启动计算机,改为 c:windowsrundll.exe user.exe ,exitwindowsexec 当然在实际的projector中不能直接用c:windows,而要用fileio的getosdirectory()等函数先获得系统相应目录。7、在runtime动态地改为Director置的图标 最常用和简单的方法是对于一个sprite,施与以下behavior:sprite(me.spriteNum).cursor=280 -手形光标 一般的光标设置以上一句就够了,更具个性化的光标设置这里不谈了。置图标(有些是相同的):0-4 200 254 256-269 271
16、-272 280-281 284-286 290-304 8、Lingo支持递归!用到搜索算法的朋友们应该高兴吧。9、director中事件发生的顺序 prepareMovie beginsprite for frame 1 stepFrame for frame 1 prepareframe for frame 1 startMovie enterFrame for frmae 1 exitfrmae for frame 1 beginsprite for next frame 10、设置搜索路径的合适位置 实际上,在prepareMovie前,所用到的cast及相关的member包括其关系
17、都应作好准备。所以不可在movie为自身设置搜索路径。一般在stub player中设置searchpath为佳。利用director.ini调试应用程序本文介绍了如何使用directro.ini文件来调试project程序或者shockwave movie。 本文介绍了如何使用directro.ini文件来调试project程序或者shockwave movie.当我们在director编程环境里进行程序的调试的时候,我们可以看到脚本错误的类型,然而,当我们的程序运行在.exe或者shockwave movie的时候,我们看不到详细的错误提示信息,我们看到的只是象下面的一些提示:“scrip
18、t Error,continue?”等。这样的话就增加我们当错误发生的时候调试应用程序的的难度。director.ini文件可以帮忙解决这一个问题,使用DisplayFullLingoErrorText命令,我们可以是程序即使在.exe或shockwave movie的情况下面,依然可以看到错误的详细的报告。方法如下: 1、我们首先可以找到director.ini文件,这个应该是很容易的吧! 2、然后我们可以打开这个文件,用记事本程序打开就可以了,然后我们使用他的查找字符的功能,来查找DisplayfullLingoErrorText这个关键字。 3、如果没有意外的话,我们就可以看见如下所示的
19、一段:;DisplayFullLingoErrorText=1将前面的“;”去掉。 4、下面分为两个分支: 如果你是打包成.exe文件的话: 将director.ini文件另存为与你打包后的.exe文件的文件名相同。将后缀改为.ini。eg:如果你的打包后文件为myproject.exe.则将director.ini文件另存为myproject.ini。与之相对应的exe文件放在同一目录下,路径相同。 如果你是打包成shockwave movie的话: 将director.ini文件另存为shockwave.ini.将其放在你的shockwave文件夹下面就ok了。如果你的是window98或
20、95,则shockwave文件夹位于:WindowssystemMacromedshockwave. 如果你的是windwo2000或NT,则shockwave文件夹位于:Windowssystem32macromedshockwave. 5、好了,现在你在运行你的程序,看一看,是不是有详细的错误的提示了(当然,你程序写的好,没有错误,当然就没有错误提示了)。Director技巧-哪些xtras需要在最后的project里捆绑675这个问题要根据具体的PRoject来回答,下面的只是一般性的建议或者说general guideline这个问题要根据具体的PRoject来回答,下面的只是一般性的
21、建议或者说general guideline,仍然建议每个用户查阅help,以及其他专业书籍获得较为全面的知识。好,以Director 7为例:这是在Director目录下的xtras文件夹,让我们来分析一下这里面的容,注意捆绑xtras的原则是只要必需的xtras.1.activeX,通常较为少用,原因是跨平台的问题,如果你的电影里使用了activeX controls,你就需要捆绑,注意里面有两个文件,ActiveX.X32是running time的, ActXPriv.X32是用于authoring time的无须捆绑。很多的xtras都有两个版本,一个用于编辑状态,一个用于发布状态,
22、记得只要捆绑发布状态的Xtras.2.Beatnik,这个是用于rmf文件的,多半用不上,几乎所有的rmf文件都需要付licence fee.所以可以忽略。3.Devices这两个基本上都需要,DirectSound用于支持DirectX的机器,macromix对所有的机器都适用,不过质量较差。4.Filter Support,用于编辑状态下使用photoshop的Plugins,无需捆绑。5.Flash Asset如果你的电影里有swf member or vector shape member,你需要捆绑Flash Asset.x32,另一个是用于编辑状态的。6.Intel WDE,是In
23、tel发布的特效很cool,不过你如果没在你的电影里使用,就无需捆绑它。7.Media Support这个有点复杂,不过原则一样,通常你如果用了那项就要捆绑相应的xtras.文件名中带option的是用于编辑状态的,带asset的是用于running time的。不难识别,较为常用的有:font asset.x32,SWACnvrt.x32,SWADCmpr.x32,SWAStrm.x32,Text Asset.x32,TextXtra.x32. 很明显第一个是当你使用embed font,接下来的三个是当你使用shockwave audio时,最后两个一般来说是必须的很少有电影没有text
24、member的。其他如animated gif,cursor,还有如果你需要读写外部text文件则FileIo.x32就是必须的了。8.Mix大多数是用于编辑状态的,几乎不必捆绑。9. Multiuser这是个hot point,如果你用了它来制作online chat你当然就需要它了,否则不必捆绑。10.Net support如果你的电影里有和net相关的容,如调用html文件,网上发布等,你需要复制这里面的xtras.11.Photocaster 2用于编辑状态不必捆绑。12.Qt3三个里面只需要QT3Asset.x32,即使没有用视频文件,通常也需要捆绑它,因为它对sound mix的支
25、持要好于Macromix.x32. QTExport.x32是用来输出视频文件的,我没有在projector里用过。13. Save as java,顾名思义,用于编辑状态,输出Java Applet,我没用过。Director技巧-关于text scroll 的问题483有一个朋友在论坛上问如何让一个text sPRite 自动滚屏?有一个朋友在论坛上问如何让一个text sPRite 自动滚屏? 还有一个要,当滚动到文本的最后一行,可以再回到第一行重新继续滚动, 另外还要求如果鼠标点在文本上就停止滚动,再点击又继续滚动。回答: 这是一个很有趣的问题, lingo 的语句并不难, 需要了解的
26、是一些背景知识和解决问题的过程, 事实上, lingo programming的过程就是解决问题的过程, 对于解决问题来说, 第一步莫过于定义问题是什么?从上面的问题里我们已经了解得比较清楚了, 下面是问题清单:1Text sprite 自动滚屏;2当滚动到最后一行时回到第一行重新开始滚动;3鼠标点击toggle 滚屏的on 和off.我们知道, text member可以有几种不同的framing 设定,对于滚屏来说,最合适的设定是fixed.见下图:这样可以将比较长的文件限制在有限的舞台空间来显示,同时又不出现滚动条。 不过这只完成了第一步, 我们需要lingo 把文本文件滚动起来。 最合
27、适的的语句是用scrollTop这个text member 的属性。 它的定义是从member 的顶端到第一行可见文字的距离, 当movie 播放时,我们都会使用on exitFrame 句柄来制造循环。 好, 如果我们可以让这个text sprite 在每次离开frame时,它的member.scrollTop值就增加一点,不就实现了滚动了吗。member.scrollTop=member.scrollTop + 4这就是核心语句。 那么如何得知文本最后一行的位置以及建立与scrollTop的关系呢? 请看下图:我们可以很容易的得出这样的结论, 当最后一行文本显示在舞台上时,那时候text member 的scrollTop 值等于member的高度减去sprite 的高度。也就是 :member.height sprite.height = the scrollTop when last line appear on the stage.鼠标的控制比较容易,设定一个fl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1