01. 如何制作一个放映机(projector)可以在不同分辨率下播放?
[A] 加入下列语句:
on prepareMovie
(the stage).rect = (the desktopRectList)[1]
(the stage).drawRect = (the desktopRectList)[1]
end
注意,这个语句是通过放大或缩小舞台来达到效果的,所以会有变形。
02. 如何导入photoshop的图层?
[A] Director7.0以后的版本你可以通过Medialab公司的Photocaster Xtra来实现。
03. 在程序中如何导入图片而不失去图片周围的白色部份?
[A] 通过指定图片的trim whitespace属性可以实现:
m = new(#bitmap)
m.trimWhiteSpace = 0
m.filename = the moviePath & ‘‘file.bmp‘‘
m.media = m.media
04. 如何得到全局变量列表?
[A] 在messages的窗口中,你可以输入showGlobals来显示所有的全局变量。以下的代码也可以显示所有的全局变量:
repeat with x = 1 to (the globals).count
put (the globals).getPropAt(x) & ‘‘ = ‘‘ & (the globals)[x]
end repeat
05. 如何播放mpeg文件?
[A] 有一系列的方法,不能说哪一种更好,并且在pc机和mac机上是不一样的,下面是四种常见的方法:
1. 用一个xtra。这种方法用起来简单,且也有好的产品支持,但大多不能跨平台使用。当然,这是需要购买的。
2. 使用ActiveX控件。这只能在pc机上用,相对xtra而言会有更多的限制,但它是免费的,且与标准playback能够很好的集成。
3. 使用quicktime。但这只能在mac的机子上用(不过5.0好像也可以支持pc)。
4. 用mac来调用。这是另一种只支持pc机的方式,但与d集成不好,不建议采用。
选取一种最适合你的方法,但要记住多在不同的平台上做测试,mpeg文件在每种平台上的效果都是不同的。
06. 如何才能更改project的图标?
[A] 可以通过第三方工具来实现,比如Hoolicon。
07. 如何制作光盘的自动运行程序?
[A] 在mac上可以选上自动运行选择“in Toast for the HFS volume”。Toast是Mac上的烧录软件。HFS是Mac上硬盘的文件制式,相当于PC上的FAT或NTFS。
在pc上,可以制作一个包含以下内容的txt文件,文件名为autorun.inf
[autorun]
open=projectorname.exe
icon=icon.ico
更改projectorname使之与你的exe名一样,并可加上路径如open=stuffprojector.exe,图标可以是任何的图标文件。
08. 如何关闭一个miaw?
[A] 最安全的关闭一个miaw的方法是在这个miaw中设置一个为true的全局变量,在这个miaw的影片中通过这个变量关闭miaw,而不要让miaw自己来关闭。同样,你可以向舞台(stage)发送命令来关闭它。
09. 如何得到系统的打开和保存文件的对话框?
[A] 在director中有好几种方法可以得到。下列是常用的四种方法。注意对话框并不能打开文件,它只是返回文件的完整路径(File Path)和文件名称(File Name)。
1. FileIO:
Open -
set myFile = new(xtra ‘‘fileio‘‘)
set theFile = displayOpen( myFile )
set myFile = 0
Save -
set myFile = new(xtra ‘‘fileio‘‘)
set theFile = displaySave( myFile, ‘‘Title‘‘, ‘‘Default File Name‘‘)
set myFile = 0
2. Buddy API:
Open -
set theFile = baGetFilename(‘‘Open‘‘, ‘‘C:‘‘, ‘‘Filename‘‘, ‘‘Filters│*.*‘‘, Flags, ‘‘Instruction‘‘, Allow Folder Selection, X-Location, Y-Location )
Save -
set theFile = baGetFilename( ‘‘Save‘‘, ‘‘C:‘‘, ‘‘Filename‘‘, ‘‘Filters│*.*‘‘, Flags, ‘‘Instruction‘‘, Allow Folder Selection, X-Location, Y-Location )
3. FileXtra:
Open -
set theFile = fileOpenDialog(initialDirectory, filterString, dLogTitle, createPrompt, FileMustExist)
--On the Mac, only the initial Directory and filterString are valid
Save-
set theFile = fileSaveAsDialog(initialDirectory, fileName, dialogTitle, overwritePrompt)
--On the Mac, only the initial Directory and fileName, and prompt are valid.
4. MUI Xtra:
Open -
set aMuiObj = new (xtra ‘‘MUI‘‘)
set fileString = ‘‘Open this file‘‘
set theFile = fileOpen(aMuiObj, fileString)
Save -
set aMuiObj = new (Xtra ‘‘MUI‘‘)
set fileString = ‘‘save this file‘‘
set theFile = fileSave( aMuiObj, fileString, ‘‘with this prompt‘‘ )
10. flash可以向director中传递变量吗?
[A] 你可以用getURL的三种方式来实现:
getURL ‘‘event:directorHandler‘‘
getURL ‘‘lingo:directorCode‘‘
getURL ‘‘string‘‘www.goodsgy.com
www.goodsgy.com
<--分页-->
www.goodsgy.com
01. 如何将控制元素放置在视频精灵之上?
[A] 将控制元素放置在视频精灵之上的唯一方法就是利用一个miaw(窗口电影)来代替控制元素并将其放置在视频之上。
02. 如何利用Valentina(一个数据库插件)在一个表中新建一个记录?
[A] 下面是使用Valentina数据库插件向表中添加新纪录的方法:
--如果还没有打开一个数据库则打开
vDB = new(Xtra ‘‘VDatabase‘‘)
vDB.OpenDatabase(‘‘databasename.vdb‘‘)
--vTable为表名
vTable = ‘‘tablename‘‘
-- 创建指针(自己理解)
vRS = new(Xtra ‘‘VCursor‘‘, vDB.getRef(), ‘‘SELECT * FROM ‘‘ & vTable)
--创建一个新记录
vRS.SetBlank()
--添加数据
vRS.SetField(‘‘fieldname1‘‘, ‘‘value‘‘)
vRS.SetField(‘‘fieldname2‘‘, ‘‘value‘‘)
....
--保存记录
vRS.AddRecord()
--取消指针
vRS = 0
03. 如何在另外的操作系统中创建一个执行程序?
[A] 为在一个特定的操作系统中运行Director生成的程序,必须购买基于该操作系统的Director版本并重新编译该程序。
04. 哪些鼠标指针能够应用在Director的Lingo中?
[A] 在Director中应用鼠标指针有两种方法:一种是通过指针命令调用当前操作系统的系统指针,另一种就是用两个演员来完成,一个作为图像,另一个作为遮罩。下面列出了标准操作系统的系统指针以及它们在Director中的编号。
www.goodsgy.com
05. 我如何在Director 8或更高版本中删除整段帧?
[A] 在Director 8中删除帧很简单,就是双击精灵通道1和帧脚本之间的灰色区域,再按下键盘上的Del键即可。按着shift键并选择结束帧上的灰色区域,按Del就可删除所有想删除的帧。
06. 我如何在用户的系统中侦测到是否安装了QuickTime?
[A] 以下的代码将侦测用户的机器中是否安装了QuickTime3或更高版本,如果没有则启动安装程序(假设Quicktime安装程序与Director程序在同一目录下)并退出正在运行的Director程序,如果安装了则跳转到名为“start”的电影。
on exitFrame --帧脚本
global qtversion --定义全局变量qtversion
put quicktimeversion() into qtversion --quicktimeversion()为侦测系统中的Quicktime的版本号,将版本号存到全局变量qtversion中
if the quicktimePresent = 1 then --the quicktimePresent为侦测是否安装了Quicktime,安装了则其值为1,反之则为0
if qtversion < 3 then --版本是否小于3,小于3的话则执行后面的语句
open ‘‘QuickTimeInstaller.exe‘‘ --启动安装程序
quit --退出Director程序
else --不小于3的话则执行下面的语句
go to movie ‘‘Start‘‘ --跳转到电影“start”
end if
else
open ‘‘QuickTimeInstaller.exe‘‘ --未安装Quicktime则启动安装程序(the quicktimePresent=0)
end if
end
07. 为什么我的视频播放时很不流畅?
[A] 这里有一些方法以供参考(下面几件事都是造成不流畅的罪魁)
1. 过高的数据流, 应该尽可能的降低视频文件的数据流
2. CPU速度太低,一些像Sorenson的视频解码格式由于使用了高速压缩,所以需要大量的CPU占有率。
3. 过多的更新,试图木偶化速度通道,当在播放视频时设定其为1帧,其目的是减小更新场景的次数。
08. 为什么当我建立一个指针时会出错?
[A] 从Valentina的1.8.5版本升级到1.8.6b18版本后,当未创建一个缓存区就使用指针会出现致命的错误。很可能没有运行建立缓存区的命令(ValentinaInit(256*1024,‘‘‘‘,‘‘‘‘),其命令是建立一个大小为256K的缓存区),或者你已经关闭Valentina数据库(valentinaShutdown --其命令是关闭所有数据库并取消缓存区)。
09. 为什么当我打开一个数据库是会出现错误32?
[A] 你已经在别的地方打开了它,Valentina数据库插件不支持多个连接。
10. 我如何能打开更多的指针?
[A] 在版本1.8.5里是不可能的,你只能用运用更精确的SQL语句(Valentina是通过SQL语句来建立指针的)来创建指针或运用Lingo来判断、计算每一条纪录。www.goodsgy.com
www.goodsgy.com
<--分页-->
www.goodsgy.com
01. 怎样才能在放郴╬rojector)中得到完整的错误信息以便于调试?
[A] 对于最终用户,Director禁止显示产生问题的代码的真实的错误信息。要想打开这个功能,可以新建一个名为projector.ini(这里projector就是你的放映机文件的名字)的文件,或者是新建一个shockwave.ini的文件,放在shockwave系统文件夹中。在文件中包含以下文本:
[Lingo]
DisplayFullLingo ErrorText=1
这个会使Director像在书写模式中一样使用完整的描述性错误。
02. 为什么有些透明的背景图片有“光晕”效果?
[A] 与一个白色背景一起插入8位或16位的图片时,有时会在图片周围产生一圈由白色象素组成的光晕。如果你仔细地检查,会注意到它们经过抗锯处理,不是纯白色。可以试试下面的方法:
1. 用32位的图片。这个方法允许使用一个alpha通道,而不是增加文件的大小。
2. 用白色填充这些像素点,使它们成为明显的硬边。
3. 在演员表中使用mask的图片,并在精灵中使用mask的墨水效果。
03. 怎样建立一个Mac和PC混合的CD ROM?
[A] 在PC上有一些象CD Everywhere这样的程序可以帮你做,但在Mac上用Adaptec Toast更简单。在Toast里,执行Go to Utilities-->Create Temporary Partition,在Mac里生成一个650MB的分离空间,把它命名为你CD的名字,用Command + I命令改变图标并将你选定的图标粘贴进去,然后拷贝所有mac文件和共享的内容进这个分区并且按照想要的方式组织光盘内容。
一旦你完成这步,将所有pc独享文件(不包括共享文件)拷贝到新分区之外的文件夹里。在Toast里选一个Mac/ISO的混合版面,把你建立整个Mac卷拖到Mac这边,然后打开这个卷并且选择任何在Mac和PC间可共享的文件,在Toast里把这些文件从分离空间里拖到PC这边。
现在将那些额外的PC文件拖进Toast并且按版面设计排列它们,使它们就像在PC盘面上一样。将pc文件用Joliet方式命令,此时你可以按mac的方式作些设置,比如自动播放,最后保存并刻录.
04. 我能输入和输出Access的数据吗?
[A]可以。用Paradigmasofts网站上的ODBC工具,你可以输入或输出来自任何ODBC数据源的数据。在要输入/输出之前,你需要用正确的方法(相对于其它的数据库)来设置Valentina数据库。你也可以阅读在Cursor Xtra上的ImportASCII和ExportASCII命令。
05. 为什么我的按钮运行起来不一致,有时候能用,有时候又不能用?
[A] 这个问题很难查明,但要注意的是:
1. 核对一下脚本代码的拼写是否正确。大多数时候,这是所有问题的起因。
2. 检查两个脚本是否有冲突。你有没有在sprite上设置多样的行为,而这些行为中有些有冲突?你是否在运行一个精灵角本的同时有一个一个演员角本也在运行?
3. 是否在帧中是否有一个带有转场的循环。如果有的话,这是不对的,我们宁可把循环放在下一个画面。
06. 我怎样才能提高电影的回放(playback)效率?
[A] 这个问题就连行业中的专业人员也都在探索。有很多因素都可以使回放的速度变慢,但都和内存管理有关。如果你在一台只有很少内存的机子上放你的电影,其效果当然不会比在一台有很多内存的机子上放好。
那么我们怎么解决这个问题呢?
1. 让你的文件越小越好。这并不意为着你就只能用黑白图片或简单的图形,它的意思是在要用很多高分辨率的图片时,你要小心一点。保持低的颜色度,尽量低到实用就行了。
2.不要使用多余的图片。意思是如果你有一个只有少部份区域变化图片的动画,就最好为变化区域单独设置演员。避免重复同样的演员,删除没用的演员,然后选择‘Save and Compact'。
3. 不要使用大量Director内存的其它东西。使用大量的transparency ink 效果(例如 fades),为一个zoom类型的效果而用很大的可伸缩图片,以上几点都会使Director运行困难,所以如果用不同大小或是不同透明度的分割的图片,它可能会运行得快些。
4. 声音占了很大的空间,可以用Shockwave Audio做实验试试。使声音与画面同步可能会很难,因为它依赖于电脑读取声音和画面的速度。要想使两者紧促的同步,你必须用简短的声音和使用速度设置来等待提示点。
5. 要使你的电影平稳的播放,最主要的方法是避免你的Director过度工作。将你的影片分成几个易于管理的部份,把大电影做成很多的小电影,Director一次只读取一部分,这样比一次把所有的东西都读出来而导致整个系统变慢好多了。
6. 如果你有很多数字视频或是大的CAST成员,那么在它们用过后把它们从内存卸掉吧。
07. 我怎样从所有自定义调色板中得到界面的颜色?
[A] 清除你的所有的事件中的8位图形的一个最好的方法之一,就是为你的界面建立一个分离的调色板,再用你自定义的颜料去填充它们。
要达到那个目的,最好的工具是Fireworks。用128色的gif格式输出你所有图片,选择File-->Export preview并将格式设置成gif,调色板设置成adaptive,颜色数设置成128。然后为你的project建立带有所有界面按钮的分离文件,命名文件为“Interface”,并且用与“Interface.gif”相同的格式输出图片。用8位的自定义调色板把所有的图片导入到Director,每一张图片都会有各自的自定义调色板。找到“Interface”调色板并且双击,选择所有的128个颜色再按下control+c(复制到剪贴板)。打开每一个自定义调色板,你可以看见每一张图片的调色板里只有头128个颜色,剩下的都是黑色。将每个调色板的后128位颜色替换,然后双击它们中的一个并选择前128个颜色。在调色板窗口里单击储备颜色按钮并选择“selected colors”,然后打开“interface.gif”成员并映射到前一个调色板。导入所有的界面按钮并把它们映射到前一个调色板,然后你就要从所有颜色中把储备清除。
这个技术对背景来说是非常好的。如果你需要很小的,清楚的,8位背景图片,那么这是个好方法,界面图片将使用自定义调色板下128位颜色。
08. 我怎样才能得到一个不规则的或是“cutout”的成形MIAW?
[A] 在Director7或是以后的版本中,要得到一个自定义的成形MIAW,只要简单的把windowType设置成一个1位的位图即可:
( window "windowName" ). windowType = member ( "1 bit bitmap" )
09. 怎样才能使Macromedia许可我的产品?
[A] 你是怎样用发行协议发行你用director 8.0 建立的产品的?你必须向Macromedia提供两份副本,并且用正确的尺寸显示logos,WEB地址是什么?等等...
10. 怎样使我的MIAW与主电影连接?
[A] 用Lingo “tell”,例如:
tell window "window name"
go to frame 1
end tell
或者
tell the stage
handler ()
end tell
结束tell 将会使命令停止去其它的window。www.goodsgy.com
www.goodsgy.com
<--分页-->
www.goodsgy.com
01. 我怎样才能在Director中使用Powerpoint文件呢?
[A] 在Director中有多种方法来打开或者显示一个Powerpoint幻灯片。
1. 使用Director的Powerpoint Import这个Xtra直接导入Powerpoint幻灯片。
2. 使用Lingo命令open {file name} with {application name},这种方法需要用户安装过Powerpoint或者Powerpoint Viewer。Powerpoint Viewer是微软自由发放的一个软件,可以在用户没有安装Powerpoint的情况下放映幻灯片。
3. 使用ActiveX控件打开一个Web浏览器窗口来显示Powerpoint文件,这需要IE和
Powerpoint或者Powerpoint Viewer。
4. 使用其他第三方Xtra,包括Ravware's PPViewer或者BuddyAPI。二者都需要用户已经安装过PowerPoint Viewer。
02. 我怎样通过BuddyAPI来打印PDF文档呢?
[A] 使用BuddyAPI你就可以打印PDF文档了,但你必须保证Acrobat Reader已经被安装到了你的系统上。
有两种方法来打印一个PDF文件:一种方法是给用户提供一个打印对话框,另一种方法就是在后台进行打印,两种方法具体操作如下:
1. 不使用打印对话框:
vResult = baPrintFile(vFile)
2. 通过标准的打印对话框:
vResult = baRunProgram(baShortFileName(baFindApp( "pdf" ) && "/p" &&
baShortFileName(vFile)), "Minimised" , false )
03. 我怎样才能创建一个All_In_One的按钮行为,把所有和按钮有关的功能集中在一个行为里面?
[A] 这个问题最好的回答就是使用Alphamania Shift Hue effect。使用这种方法用不着创建单独的rollover和MouseDown成员,只需要为rollover、MouseDown和MouseUP选择一个色调变化的等级即可。这样做的主要优点是不需要其他的行为,并且不需要为按钮的各种状态创建不同的成员。
04. 我怎样才能让多个单选按钮成为单选按钮组?
[A] Director缺省的单选按钮和复选框有点类似,如果你希望他们一起工作,你必须编写lingo来实现打开一个时关闭另一个。最基本的方法就是通过调用sendAllSprites来实现。
05. 怎样用lingo优化记录集(游标)?
[A] 你可以通过评估记录来优化游标,并通过DropCursor命令来忽略无效的记录。这将返回你需要的记录集,下面是一个简短的例子:
vRS.firstRecord()
repeat with x = 1 to vRS.getRecordCount()
if vRS.getField(vField) = vCondition then
vRS.DropRecord()
else
vRS.NextRecord()
end if
end repeat
译者注:游标是一个SQL术语,数据库游标和字处理程序上的光标类似,当你按下Down箭头时光标就在记录上向下滚动一行,用数据库游标可以选择一组数据,可以在这组记录(通常称为记录集)上滚动光标,并检查游标指到的每一行数据。
06. 怎样在CD上为我的movies保持相对连接而不出现定位对话框?
[A] 在你发布作品、保护和刻录CD时,Director会保持影片的相对路径,最常见的错误是创建文件时采取一种目录结构方式,保护文件时却使用另一个目录以便备份。问题就在于Director只记住了文件最初的连接,但现在却被破坏了。
其实,你可以在在searchPath中包含进当前目录:
( the searchPath ). add ( the moviePath & ‘‘movies‘‘)
07. 怎样在全屏模式下打开stage时去掉stage上一个像素的黑框?
[A] 为了在projector上去掉黑框,你可以使用非正式声明的MIAW的“cutout”属性。创建一个1x1、全屏播放的projector,通过MIAW命令用他打开你的主影片,设置主影片的windowType为一个1 bit的位图,该位图可以是一个矩形,可以是你的影片的形状:
( window ‘‘my window‘‘). windowType = member (‘‘1 bit bitmap‘‘)
对于Director 7.02或早期版本,你可以使用border这个Xtra实现同样的效果。
08. 怎样在Valentina中回滚?
[A] Valentina不支持回滚,因为你不能通过SQL语句来插入或者改变数据,也就不能简单的保存SQL历史。
译者注:回滚也是数据库术语,即取消多步数据库操作。
09. 我怎样在Shockwave中保存和得到用户的数据?
[A]Shockwave不允许你访问用户的硬盘,但有一个目录例外,这样做是为了防止别人编制恶意的Shockwave程序来破坏你的系统。如果你想在Shockwave中保存用户的数据,使用getPref和setPref命令即可:
setPref prefName, prefValue
getPref (prefFileName)
11. 各功能键的键控代码(keycodes)是多少?
[A] 功能键可用作keycodes来测试:
F1-122
F2-120
F3-99
F4-118
F5-96
F7-98
F8-100
F9-101
F10-109
F11-103
F12-111
F13-105
注意,功能键的keycodes在生成放映机时(projector)时是不能用的。www.goodsgy.com
www.goodsgy.com
<--分页-->
www.goodsgy.com
01. 如何通过Director来发送邮件?
[A] 可以用以下的方法实现:
1. 用一个Xtra。
2. 用gotonetpage的lingo命令,例如,goToNetPage ‘‘mailto:amith@china.com‘‘。
3. 用CGI代码并且将邮件正文传给CGI的邮件代码。
4. 用一个支持Smtp服务的Multi-user来发送邮件。
02. 如何防止Shockwave提示用户缺少Xtra的错误信息?
[A] 如果Shockwave返回“This app requires an Xtra....”, 那么你应该将需要下载的Xtra作上标记,然后去Modify-->Movie-->Xtras,点中需要下载的Xtra的‘‘Download if needed‘‘选项,保存且输出。
03. 如何将在Shockwave中用到的自定义的Xtra包含进来?
[A] 要想使你的Xtra能够自动下载并安装到Shockwave中,你需要有一个Verisign证书。用来向用户保证你不会给他们安装带有恶意的软件或可以追踪的下载。
你要先从Macromedia那里得到插件的安装包(Xtra Packging Kit)。开始后安装程序会带着你按指定的程序去购买那个成套的用具包($49)并打开它,把它建立的目录放在你的Director的Xtras文件夹中。
下一步是进入那个Packager目录,那里会有一个可以生成一个请求序列号的程序。照着屏幕上的说明做,就会生成三个文件:
1. A public key
2. A private key
3. A certificate request
然后去 digitalid.verisign.com ,并且把表格填好,然后打开包装者建立的请求证书的文本文件,并且把文件里的文本粘贴到html页里的框里。
注意,这种形式可以在两种浏览器下浏览,但是你现在要在Netscape里输入正确的内容才能接受你的字符。根据Verisign证书,在Internet Explorer中这个问题会在2000年1月15日修复,但Netscape是一个非常可靠的解决方案。如果你收到了一个可以得到序列号的链接,它不会是完整的。它会以邮件附件的方式发给你。
在你从Verisign得到最终的序列号之后(一般是48小时到一周时间,取决于你的公司确认的时间),你就可以建立自己的包了。插件必须标记成Shockwave安全模式, 正如XDK中所说明的那样。打开Director并且从Xtras菜单中运行Packager。你需要为每一个平台定制一个副本的包装者,以便于在Mac和PC上都可以用。
一旦包装好了,上传到你的服务器并且把正确的文件位置添加到Director文件夹里的Xtrainfo.ini中。下次你打开Director时,就会有为你的包作记号的选项,就像“Download if needed”。
04. 是什么原因使搜索整个数据库变是很慢?
[A] 首先,你要检查一遍数据库中的字段,看看它们是否是应有的大小。例如,如果你的文本字段平均在1k左右就不要用100k来分割。
其次,再检查一遍你使用的字段的类型,看看你是否能让它们“让步”而成为小一点的类型。这个方法通常能加快速度。
最后,检查你的索引文件。你是否把你要搜索的字段都做了索引,做这个会使搜索的速度进一步的提高。
05. 为什么我在做Shockwave电影的时候Shockwave Audio不工作了?
[A] Shockwave Audio对于Director来说是一个Xtra,因此用不同的方法播放其它的声音,Xtra要添加到Director中。它们不是核心程序中的部分,所以需要Xtra文件来伴随你的Director文件。对Shockwave声音首要的问题就是你不要直接导入swa。要使用一个Shockwave声音文件,选择Insert-->Media Element-->Shockwave Audio,这时,会出现一个窗口,浏览你的文件并点击OK按钮,你将看到Director提示的swa文件的绝对路径。你输入的数据就是Director播放swa文件时所需的数据,而不是swa文件本身。那个路径告诉Director要播放的Audio文件的位置。swa文件将会保留一个外部文件用来伴随你的Shockwave文件,这个路径也要一样保留,除非你把swa文件和你的Shockwave文件放到同一个目录里(还有html文件)。
现在在你的电影中放入声音,不要把swa的Cast成员放到声音通道里,而应该把它放入到effect通道下面的任何一个有用的通道中。你必须记住,导入swa文件时声音通道的默认设置是ANY。
06. 为什么我的声音不能播放?
[A] 首先你要找到引起问题的原因。在Director外面放一放声音,看是否能放。再看看是不是电脑的问题。是系统不能发声吗?还是文件被破坏了?是Director的声音被设置成无声吗?你是否用了一个prppetSound命令,而不是updateStage命令?
07. 为什么我的一些声音文件不能在projector中播放?
[A] 在PC上,Director在释放声音通道时可能会有问题,这个问题在播放了数字视频后尤其明显。可以把以麓敕湃肽愕膕tartMovie来处理:
on startMovie me
set the soundKeepDevice = 0
end
08. 为什么我在做Shockwave电影的时候Shockwave Audio不工作了?
[A] 如果你有一个swa文件在Shockwave里不能工作,试着用其它不同的取样比率,当你把WAV转换成SWA时,用任何低于48kbps速度的都有可能在Shockwave中不能正常播放,你至少要一个22000HZ或更高的WAV源文件。用普通的方法输入swa就可以工作。我有很多已经导入了swa的Shockwave文件,它们都工作得很好。
09. 我怎样才能用一个简单的音符建立一个音符的完整排列?
[A] 这个技术只在Director8.0中有(希望在以后的版本中也有)。在D8中有一个关于声音成员的非正式属性,叫rateShift。这个属性可以让你把音符指定提高无数多个的半音。因此,举个例子说,把rateShift设置成1就可以把音符提高一个半音(例如从D变成D sharp),把rateShift设成2就把音符提高两个半音(例如从D变到E)。
如果用rateShift属性把音符设置得太高了,声音就可能听不见了,因为rateShift属性或多或少的改变了音符的持续时间而使音符有一点不同。
10. 当我的放映机(projector)在读取时,怎样才能在上面放一个splash屏幕?
[A] 用Director 8的话很简单。以你的放映机(projector)的名字在PC上建立一个BMP文件或是在Mac上建一个PCT文件。例如,如果你的放映机的名字是“Projector.exe”,那么你的位图的名字就叫“Projector.bmp”。这个会使Director在读取其它的程序时自动读取那个splash屏幕。www.goodsgy.com
www.goodsgy.com
<--分页-->
www.goodsgy.com
01. 怎样产生飞行的精灵?
[A] 使用puppetsprite命令获得对于一条含有Lingo的精灵通道的完全控制,然后在scriptinstancelist属性框中为精灵添加行为。所以,一段调整精灵的脚本就象这样:
on makesprite sNum, mName, sLoc
puppetsprite sNum, true --木偶化精灵
add sprite (sNum). scriptinstancelist , new ( script "myBehavior" ) --添加行为
sprite (sNum). member = mName --设置member
sprite (sNum). ink = 36 --设置透明背景墨水
sprite (sNum). loc = sloc --放置精灵
end
02. 什么是Stub Projector?
[A] Stub Projector就是一个简单的只有一条命令的Director放映机,比如:
on exitFrame
go to movie "moviename"
end
它在CD盘交换时很有用。CD上的数据是联系的,但你只想要前一盘的最后的放映机,短放映机启动起来也比在主放映机里启用所有的数据来的快。
03. 怎样使用Lingo代替速度通道?
[A] 速度通道可以使所有的帧不动,然后触发由exitFrame控制的不更新的行为。有许多行为可以更好的替代速度通道的功能:你可以用数据库中提供的“wait”或者“hold”等关键词来编写行为,你也可以使用puppetTempo命令来改变速度,这样的方法还有很多。一般说来,如果你能用速度通道来做,你就可以用Lingo做的更好。
04. 当用Lingo改变文本前景色的时候,文本怎么会有位移?
[A] 这是个属于字间距和防锯齿的问题。如果文本的颜色改变时受到背景的影响,那它就可能因防锯齿而移到了另外的位置。这种情况大多是在文本中含有一个段落,而你正用Lingo改变文字颜色的情况下发生的。
05. 为什么在使用Trackthemcolors Xtra时,系统老是提示“Couldn't open a video channel”?
[A] Mac机在同一时刻只有一个Xtra可以看到视频。之所以会出现这个错误信息,是因为你用两个不同的Xtra从同一个源文件中获取视频或者观看视频,比方说Trackthemcolors Xtra和QTGrabSprite Xtra。
06. 在我的CD里有用Acrobat Reader做的东西,要不要在用户的电脑上也安装Acrobat Reader?
[A] 在用户的系统上可以不用安装,而且如果在NT工作站上要装的话可能会有问题。其实只要这张光盘上装有Acrobat Reader,你就可以直接使用,你所需的只是acro32.exe这个文件。
07. 哪种视频编辑器是“最好的”?
[A] 每种编辑器处理视频数据的方法都不同,基本平衡点在于文件的大小、质量以及必要的处理器能力。像Sorenson这样的编辑器能将文件处理的很好,而且得到的文件也很小,但是它需要一个好的处理器在后台以优良的速度给以支持。其他的像Microsoft的Video可以得到很好的质量和速度,但是生成的文件巨大。在文件体积、质量之间寻找一个平衡点使之能最好的为你的电影工作便是一个窍门。某些编辑器对于一种类型的视频(比如动画)很有用,但在其他方面就一塌糊涂(比如现场行为)。你应该先测试一下那个对你的电影最合适。在 terran.com 的关于编辑器的网页上有一些好办法。请注意,一些软件必须注册,其他的装在用户的机器上才能使用。
多试验一点,读一下它们的说明书,找到一个最适合于你的软件。记住,对于CD光盘,数据传输率不能超过300kps,而且在像Sorenson或Indeo这样的编辑器上,你甚至该降的更低。
08. 怎样防止视频在播放以后在舞台上留下残影(图象滞留)
[A] 要去处已播放完毕但仍留在舞台上的视频的图象,可以在电影放完后的第一幀用一个脚本强制使它更新整个屏幕:
on exitFrame
the stageColor = the stageColor
end
09. 为什么Windows NT在声音处理上有那么多的问题?
[A] Windows NT 4.0以及更早的系统不支持Direct Sound选项。在NT上,你要使用Macromix(指定的),Macromix的问题很多。如果你装有QuickTime 3或更高版本,可以用QT3Mix,QT3Mix有着更好的混音和后台播放能力。
10. 怎样将文本文件写入用户的硬盘中?
[A] 写文本文件最常用的方法是使用fileIO Xtra。在存取文件、检查文件是否已存在以及将字符数据写入文件等方面,fileIO Xtra功能很强,在数据库中有许多行为,用于保存文件、读取文件,甚至打破计算机正常的进程。
对于Shockwave你只能使用getPref和setPref,信息将被写入一个事先调整好的目录中,因为不允许Shockwave访问本地设备。www.goodsgy.com
www.goodsgy.com
<--分页-->
www.goodsgy.com
01. 我能否在我的Director文件中制造一个屏幕保护程序?
[A] 这是一种方法,但它也许需要一些调整。例如,它实际上并不支持在文件的屏保中使用动画。不管怎样,随着你对程序创造性地增加,你
至少能够使这个屏保在屏幕上随机出现所选择的文字。你也可以使用一个或几个精灵在木偶化制成动画。
--电影脚本的开头
GLOBAL gnLastFrame, glLastMouseLoc
--把以下语句加入你的Startmovie()事件处理过程中
set the timeoutLength to 60 * 60 * 5
--这行意思是:一秒分为60个滴答,60个滴答×60=1分钟,1分钟×5=5分钟。(也就是启动屏保时间为5分钟)
when timeOut then ScreenSaver()
--把以下的语句加入电影脚本中
on ScreenSaver
put the frame into gnLastFrame
put the mouseLoc into glLastMouseLoc
go "loopFrame"
END ScreenSaver
--标记“loopFrame”处放置的是你想要作为屏保的动画或随机出现的文字
--请注意,将以下语句放置在标记"loopFrame" 处的帧脚本中
on exitFrame
CheckUserEvent()
end
--把以下的语句加入电影脚本中
on CheckUserEvent
when keyDown then ExitSaver()
if the mouseLoc <> glLastMouseLoc then ExitSaver()
go the frame
END CheckUserEvent
--把以下的语句加入电影脚本中
on ExitSaver
go gnLastFrame
when keyDown then nothing
abort
END ExitSaver
02. 当显示分辨率比我的Director文件所制定的舞台大时,我该怎样用指定的背景颜色把显示器空白部分填满?
[A] 有两种解决的方法。一种是在创建你的放映机时,选中option中FULL SCREEN。这样做的优点是很容易就能做到,但是,它最明显的缺点就是不一定是在你的客户的屏幕中间。此外,可以看来是你的发展文件里的“屏幕”的事情能在如果他们是对权利和底部的“屏幕”出现于编辑的放开上好好地结束了。
另外一种方法是使用Movie In A Window(MIAW)从窗口中调用外部文件。这需要在一些地方编程序而且也更难;但是结果将更令人满意。
这里是一种一般的处理方法。带新局长的开始做成文件,新建一个新的Director文件,并且将它的舞台颜色设置为你所喜欢的背景颜色。
接着,在分镜表的帧1中,定义下列脚本:
on exitFrame
pause
end
之后,把下列语句加入电影脚本。
GLOBAL goFileWindow, gsWindowName, gaFileWindowRect, gsWindowPath, gsSizeOfWindow
on StartMovie
SetUpWindowSpecs()
LaunchMIAW()
END StartMovie
on StopMovie
PurgeMIAW()
unload
END StopMovie
on SetUpWindowSpecs
-- inits dimensions and origins for MIAW object over splash screen
-- plug in your own names below
-- note you do not have to specify ".dxr" or ".dir" for the path to the external file
-- this can really be any name you want; it』s an internal reference
set gsWindowName to "intro"
-- this is the actual MIAW file you want opened by the stub
set gsWindowPath to ( the pathName & "intro" )
put ( the stageRight / 2 ) into nHorizontalCenterOfMonitor
put ( the stageBottom / 2 ) into nVerticalCenterOfMonitor
-- set dims for location of window relative to screen size
set nWindowWidth = nHorizontalCenterOfMonitor + 320
set nWindowHeight = nVerticalCenterOfMonitor + 240
set nHorizOrigin = nWindowWidth - 640
set nVertOrigin = nWindowHeight - 480
set gaFileWindowRect = rect ( nHorizOrigin, nVertOrigin, nWindowWidth, nWindowHeight )
END SetUpWindowSpecs
on LaunchMIAW
if objectP ( goFileWindow ) then forget goFileWindow
set goFileWindow to window gsWindowName
set the rect of goFileWindow to gaFileWindowRect
set the fileName of goFileWindow to gsWindowPath
set the title of window "intro" = "My Presentation"
set the titleVisible of goFileWindow to TRUE
-- windowType 5 is draggable on Macs; might need tweaking on PCs. Experiment.
-- take care not to allow the PC version to have a close box in its bar or you might
-- run into beaucoup problems later
set the windowType of goFileWindow = 5
open goFileWindow
END LaunchMIAW
on PurgeMIAW
if objectP ( goFileWindow ) then forget goFileWindow
END PurgeMIAW
03. “me”是什么?它意味着什么?
[A] “me”是一个传送给一个对象脚本的内部参数,就像“on new me”等等。它是对对象在内存中的位置的描述,它包括对象本身,用于指定那个对象。我们努力去把它弄清楚。
当一个代码对象在内存中被初始化时,它得到系统的一个存储器地址,一个关于那个内存中的对象的位置的十六进制数。“me”是一个关于这个对象和它在内存中的位置的关键字。
可以把计算机的许多空的空间看作是公寓的空房间。
当一个对象产生时,把它放入公寓的房间中,并且分配一个该对象居住的房间的号码 - 2 -B或13-F或其他的。这个号码的分配任务是由计算机操作系统操纵的,并且要视空闲的房间而定。换句话说,地址纯粹是任意的。你不能对你的对象物体说,进入这个已被使用的存储器地址。无论如何,这不是由lingo控制的。
那个意味着的是在你创建对象前,没有办法能判定它会被放置在哪里。因此你必须要有一个方法去操控这个对象的位置。这就是“me”的来历。
无论何时,“me”都被用作查询对象的位置,对象本身知道它目前被放置在什么地方,就象你知道你的家庭住址一样。
“me”是一个能在相应位置找到相应对象的参数,而且比写这个对象在6楼13号要简短的多。
不是在任何地方你都会在一些初始化一个对象的脚本中使用“me”,例如,在一个帧脚本中有可能不用包括“me”。
on exitFrame me
go the frame
end
然而由于你也许不止一次想要查阅一些行为,它也会变成一个对象, 并且更多的是一些单行的源代码,就像在一个精灵行为脚本中;建立一个对象并且把它放入内存,用这种方法来处理循环或复杂的造作,是很快的并且也是很稳定的。
on mouseEnter me
[ do some neat stuff here]
end
on mouseLeave me
[ do other neat stuff here]
end
on mouseUp me
ALERT "Howdy, man!"
end
on rightMouseDown me
ALERT "Next time try the OTHER mouse button!"
end
以上四种脚本都可以作为一个行为附加到同一个精灵上;因此这行为本身被附加上去后,精灵将收到以上所描述的脚本的影响。然而在这种情况下,“me”不是作为一个参数被某一指定的精灵所使用, “me”替代了附加在显示在屏幕上的精灵的行为的一个参数。自然地也能对象脚本能够被创建不能被直接附加到屏幕上的任何东西上的对象脚本。我习惯于使用这样的项目,例如,建立交互式的警告或信息对话框,通过对对象传递参数来指出要显示什么,并且返回主程序用户对对话框的应答的信息。
04. 我想把时间的表示形式改为时/分/秒。我该怎样做?
[A] 非常幸运,这是相当简单的一个问题,实际上你可以使用mod函数来进行一些计算。
取模(mod)函数是把一个数除以另一个数后,取除得的余数。
把这弄清楚后,举个例子。
假设你用7除以3。你所得到的是除下的余数1。
7/ 3 = 2 1 / 3 -- the modulus is 1.
7÷3=2……1 --模为1。
假设你用6除以3。你所得到的模是0,因为这个除法没有余数。这样,你就可以用取模函数来完成上面的转换工作。这儿是一个简单的,需要调用你想要转换的秒数的值作为参数的脚本。
on ConvertSeconds nSeconds
--得到把秒转换成分的值,用0或不赋值会很安全。
if voidP ( nSeconds ) then
ALERT "There was no seconds parameter for me to process. Exiting function."
exit
end if
set nMinutes = nSeconds / 60
--取得“分”之后的“秒”数
set nSecondsExtra = nSeconds mod 60
--取得把分转换成小时的值
set nHours = nMinutes / 60
--取得“时”之后的“分”数
set nMinutesExtra = nMinutes mod 60
put nSeconds && "seconds equals" && nHours && "hour(s)" && nMinutesExtra && "minute(s)" && nSecondsExtra && "second(s)"
END ConvertSecondswww.goodsgy.com
www.goodsgy.com