#12000/12/19 9:01:37
platform
语法 the platform
描述 系统属性; 表明所创建放映机的系统平台类型
这个属性可以检测但不可设置。
以下是可能值:
可能值 对应的平台
Macintosh,PowerPC PowerPC Macintosh
Windows,32 Windows 95 or Windows NT
为进一步的兼容和允许更多的附加信息,使用contains来检测平台更好些。
当电影作为转换成的java短程序播放时,本属性的值表示java短程序运行时所处的浏览器和操作系统。当电影以java短程序播放时本属性的值具有以下语法格式:
Java javaVersion, browser, operatingSystem
以下是本属性的可能参数值:
*javaVersion: 1.0 或 1.1
*browser: IE, Netscape, 或 UnknownBrowser
*operatingSystem: Macintosh, Windows, 或 UnknownOS
例如,如果一个短程序在Windows下的Internet Explorer中以Java 1.1播放,则platform的值为Java 1.1, IE, Windows。
实例 本语句检查放映机是否为Windows 95或Windows NT创建:
on exitFrame
if the platform contains "Windows,32" then
castLib("Win95 Art").name = "Interface"
end if
end
参看 runMode
play
语法 sprite(whichFlashSprite).play()
play [frame] whichFrame
play movie whichMovie
play frame whichFrame of movie whichMovie
play sprite whichFlashSprite
描述 命令; 令播放头跳转到一指定电影的指定帧或开始播放一个Flash电影sprite。对于前者,表达式whichFrame可以是标签的标志符字符串或是整数的帧编号。表达式whichMovie必须是指向电影文件的字符串。 当这个电影在另一目录下,WhichMovie必须指明路径。
play命令与go to命令相象,不同的是当前序列播放完,play自动把播放头返回到调用play的那一帧。
如果play发出于帧脚本,则播放头返回到下一frame;如果play发出于sprite脚本或处理程序,播放头返回到同一帧。当播放头到达相应电影的结尾或发出play done命令,一个play序列结束。
要播放一个来自URL的电影,首先用downloadNetThing或preloadNetThing()把文件下载到本地磁盘,再用play来播放位于本地磁盘上的电影,以此来尽量缩短下载时间。
你可以在一个处理程序中用play命令来播放多个电影。该处理程序在电影播放的同时被挂起,但所有电影结束后继续执行。把它与一系列go命令相比,go命令被某一处理程序调用时,播放每个电影的第一帧。在电影播放的同时处理程序没被挂起,而是立即继续执行。
当用play来播放Flash电影sprite,如果Flash电影已经停止,则它从当前frame开始播放,如果已经在最后一帧,则从第一帧播放。
每个play命令都需要一个对应的play done命令,以避免由于不返回最初调用play的脚本而消耗过多内存。为避免这种内存开销,你可以用一个全局变量来记录应返回何处。
实例 本语句把播放头转移到名为"blink"的标志符处:
play "blink"
实例 本语句把播放头转移到下一个标志符处:
play marker(1)
实例 本语句把播放头转移到一个不同的电影:
play movie "My Drive:More Movies:" & newMovie
实例 本帧脚本检查第5通道内的Flash电影是否正在播放,如果未播放,则启动它:
on enterFrame
if not sprite(5).playing then
sprite(5).play()
end if
end
参看 downloadNetThing
play()(声音)
语法 sound(channelNum).play()
sound(channelNum).play(member (whichMember))
sound(channelNum).play([#member: member(whichmember), {#startTime: milliseconds, #endTime: milliseconds, #loopCount: numberOfLoops, #loopStartTime: milliseconds, #loopEndTime: milliseconds, #preloadTime: milliseconds}])
描述 本函数开始播放排在soundObject队列里的所有声音,或把给定成员排队并开始播放。
声音成员在开始播放前需要时间来装入内存。建议在开始播放声音前用queue()来为声音排队,然后用本函数的第一种形式来播放。第二三种形式无法利用到queue()命令预调入的好处。
通过使用可选属性列表,你可以为声音定义精确的回放设置,这些属性为可选设置:
属性 描述
#member 要排队的声音成员。本属性必须提供;其余全部为可选。
#startTime 声音内部时间,从此开始播放,单位:毫秒。默认为声音的开头。参看startTime。
#endTime 声音内部时间,到此播放结束,单位:毫秒。默认为声音的结尾。参看endTime。
#loopCount 用#loopStartTime和#loopEndTime定义的声音循环的播放次数。默认为1。参看loopCount。
#loopStartTime 声音内部时间,循环的开始,单位:毫秒。参看loopStartTime。
#loopEndTime 声音内部时间,循环的结束,单位:毫秒。参看loopEndTime.
#preloadTime 播放前装入缓存的声音数量,单位:毫秒。参看preloadTime。
要观看在完整的电影中play()(声音)实例,参看Director应用程序目录,Learning\Lingo Examples子目录下的电影:Sound Control。
实例 本语句播放位于声音通道1的演员"introMusic":
sound(1).play(member("introMusic"))
实例 本语句播放位于声音通道2的演员"creditsMusic" 。播放始于声音的第4秒且止于第15秒。第10.5至14秒的片段循环6次。
sound(2).play([#member: member("creditsMusic"), #startTime: 4000, \
#endTime: 15000, #loopCount: 6, #loopStartTime: 10500, #loopEndTime: 14000])
参看 setPlaylist(), isBusy(), pause() (sound playback), playNext(), preloadTime, queue(), rewind(), stop() (sound)
playBackMode
语法 sprite(whichFlashSprite).playBackMode
the playBackMode of sprite whichFlashSprite
member(whichGIFAnimMember).playBackMode
the playBackMode of member whichGIFAnimMember
描述 演员与sprite属性;用以下值控制Flash电影或动画GIF演员的tempo:
#normal (默认)-尽可能按Flash电影或动画GIF原来的tempo播放。
#lockStep-用Director的帧速度播放Flash电影或GIF文件。
#fixed-用由fixedRate指定的速率播放Flash电影或GIF文件。
本属性可以检测和设置。
实例 本sprite脚本设定一Flash电影sprite与director电影的帧速率相一致:
property spriteNum
on beginSprite me
sprite(spriteNum).playBackMode = #lockStep
end
参看 fixedRate
play done
语法 play done
描述 命令;结束最近的play命令所启动的序列。play done命令把播放头返回到调用序列初始化play命令的地方。如果play发自帧脚本,则播放头返回到下一帧e;如果play发自sprite脚本,则播放头返回同一帧。
每个play命令都需要一个对应的play done命令以避免由于没返回最初调用play的脚本而消耗过多内存。为避免这种内存开销,你可以用一个全局变量来记录应返回何处。
命令play done对一个正在窗口内播放的电影无效。
实例 本处理程序把播放头返回到当前电影启动前正在播放的电影的那一帧处:
on exitFrame
play done
end
参看 play
playing
语法 sprite(whichFlashSprite).playing
the playing of sprite whichFlashSprite
描述 Flash sprite属性;表示一个Flash movie正在播放(TRUE)或停止(FALSE)。
本属性可以检测但不可设置。
实例 本帧脚本检测通道5内的Flash电影是否正在播放,如果不是,则启动它:
on enterFrame
if not sprite(5).playing then
sprite(5).play()
end if
end
play member
语法 member(whichCastMember).play()
play member whichCastMember
描述 命令;开始播放一个流式传输的Shockwave音频(SWA)演员。
如果声音尚未用preLoadBuffer命令预调入,此SWA声音在播放开始前会预调入。当声音正在播放,成员的state属性等于3。
要知道播放流式声音时,必须包含用来支持此功能的Xtras。
实例 本处理程序开始播放演员"Big Band":
on mouseDown
member("Big Band").play()
end
参看 pause member, stop member
playNext()
语法 sound(channelNum).playNext()
playNext(sound(channelNum))
描述 本命令立即中断给定声音通道当前声音的播放,而开始播放下一个排入队列的声音。如果给定通道不再有排入队列的声音,则简单地停止播放声音。
实例 本语句播放声音通道2的下一个排好队的声音。
sound(2).playNext()
参看 pause() (sound playback), play() (sound), stop() (sound)
point()
语法 point(horizontal, vertical)
描述 函数和数据类型;生成一个点,用horizontal指示横坐标、用vertical指示纵坐标。
一个点有locH和locV属性。点的坐标可通过算术操作来改变。
要观看在完整的电影中应用point()的实例,参看Director应用程序目录,Learning\Lingo Examples子目录下的电影:Imaging and Vector Shapes。
实例 本语句把变量lastLocation设置为point(250, 400):
set lastLocation = point(250, 400)
实例 本语句把赋给变量myPoint的点的横坐标加5象素:
myPoint.locH = myPoint.locH + 5
实例 这些语句把sprite的舞台坐标设定为mouseH和mouseV加10象素。两个语句是等价的:
sprite(the clickOn).loc = point(the mouseH, the mouseV) + point(10, 10)
sprite(the clickOn).loc = the mouseLoc + 10
实例 本处理程序将一指定的sprite移动到用户点击之处:
(donlee 译注:此行原为"end mouseDown",似多余,故删去)
on mouseDown
-- 根据你自己电影的需要设定这些变量
theSprite = 1 -- 设定应该移动的变量
steps = 40 -- 设定到那里的步数
initialLoc = sprite(theSprite).loc
delta = (the clickLoc - initialLoc) / steps
repeat with i = 1 to steps
sprite(theSprite).loc = initialLoc + (i * delta)
updateStage
end repeat
end mouseDown
参看 mouseLoc, flashToStage(),rect(),stageToFlash()
pointInHyperlink()
语法 sprite(whichSpriteNumber).pointInHyperlink(point)
pointInHyperlink(sprite whichSpriteNumber, point)
描述 文本sprite函数;返回一个值(TRUE或FALSE)来表明指定点是否在文本sprite的某超链接内。典型情况是,所用的点是光标位置。这对设置定制光标有用。
参看 cursor (command), mouseLoc
pointToChar()
语法 pointToChar(sprite spriteNumber, pointToTranslate)
描述 函数;返回一个整数表明屏幕坐标pointToTranslate下的字符在文本或文本域sprite spriteNum内的位置。如果该点不在文本内则返回-1。
本函数可用于确定光标下的字符。
实例 下面的lingo在Message窗口中显示被点击的字符编号以及该字母:
property spriteNum
on mouseDown me
pointClicked = the mouseLoc
currentMember = sprite(spriteNum).member
charNum = sprite(spriteNum).pointToChar(pointClicked)
actualChar = currentMember.char[charNum]
put "Clicked character" && charNum & ", the letter" && actualChar
end
参看 mouseLoc, pointToWord(),pointToItem(),pointToLine(),pointToParagraph()
pointToItem()
语法 sprite(whichSpriteNumber).pointToItem(pointToTranslate)
pointToItem(sprite spriteNumber, pointToTranslate)
描述 函数;返回一个整数表明屏幕坐标pointToTranslate下的项目在文本或文本域sprite spriteNum内的位置。如果该点不在文本内则返回-1。项目由itemDelimiter属性来分隔,默认把分隔符设置为逗号。
本函数可用于确定光标下的项目。
实例 下面的lingo在Message窗口中显示被点击的项目编号以及该项目的文本:
property spriteNum
on mouseDown me
pointClicked = the mouseLoc
currentMember = sprite(spriteNum).member
itemNum = sprite(spriteNum).pointToItem(pointClicked)
itemText = currentMember.item[itemNum]
put "Clicked item" && itemNum & ", the text" && itemText
end
参看 itemDelimiter, mouseLoc, pointToChar(),pointToWord(),pointToItem(),
pointToLine(),pointToParagraph()
pointToLine()
语法 sprite(whichSpriteNumber).pointToLine(pointToTranslate)
pointToLine(sprite spriteNumber, pointToTranslate)
描述 函数;返回一个整数表明屏幕坐标pointToTranslate下的行在文本或文本域sprite spriteNum内的位置。如果该点不在文本内则返回-1。行在文本或文本域中是用回车作分隔符的。
本函数可用于确定光标下的行。
实例 下面的lingo在Message窗口中显示被点击的行编号以及该行的文本:
on mouseDown me
pointClicked = the mouseLoc
currentMember = sprite(spriteNum).member
lineNum = sprite(spriteNum).pointToLine(pointClicked)
lineText = currentMember.line[lineNum]
put "Clicked line" && lineNum & ", the text" && lineText
end
参看 itemDelimiter, mouseLoc, pointToChar(),pointToWord(),pointToItem(),
pointToLine(),pointToParagraph()
pointToParagraph()
语法 sprite(whichSpriteNumber).pointToParagraph(pointToTr anslate)
pointToParagraph(sprite spriteNumber, pointToTranslate)
描述 函数;返回一个整数表明屏幕坐标pointToTranslate下的段在文本或文本域sprite spriteNum内的位置。如果该点不在文本内则返回-1。段在文本块或文本域中是用回车分隔的。(donlee译注:在Director中段与行无区别?!)
本函数可用于确定光标下的段。
实例 下面的lingo在Message窗口中显示被点击的段落编号以及该段落的文本:
property spriteNum
on mouseDown me
pointClicked = the mouseLoc
currentMember = sprite(spriteNum).member
paragraphNum = sprite(spriteNum).pointToParagraph(pointClicked)
paragraphText = currentMember.paragraph[paragraphNum]
put "Clicked paragraph" && paragraphNum & ", the text" && paragraphText
end
参看 itemDelimiter, mouseLoc, pointToChar(),pointToWord(),pointToItem(),
pointToLine()
pointToWord()
语法 sprite(whichSpriteNumber).pointToWord(pointToTransla te)
pointToWord(sprite spriteNumber, pointToTranslate)
描述 函数;返回一个整数表明屏幕坐标pointToTranslate下的词在文本或文本域sprite spriteNum内的位置。如果该点不在文本内则返回-1。词在文本块中用空格符分隔。
本函数可用于确定光标下的词。
实例 下面的lingo在Message窗口中显示被点击的词的编号以及该词的文本:
property spriteNum
on mouseDown me
pointClicked = the mouseLoc
currentMember = sprite(spriteNum).member
wordNum = sprite(spriteNum).pointToWord(pointClicked)
wordText = currentMember.word[wordNum]
put "Clicked word" && wordNum & ", the text" && wordText
end
参看 itemDelimiter, mouseLoc, pointToChar(),pointToItem(),pointToLine(),
pointToParagraph()
posterFrame
语法 member(whichFlashMember).posterFrame
the posterFrame of member whichFlashMember
描述 Flash演员属性;控制用Flash电影的哪一帧做其缩略图。此属性是对应Falsh电影帧编号的整数。
本属性可检测和设置。默认值为1。
实例 本处理程序接受一个对Flash movie的引用和frame编号作为参数,然后把该编号的frame设为该Flash movie的缩略图:
on resetThumbnail whichFlashMovie, whichFrame
member(whichFlashMovie).posterFrame = whichFrame
end
postNetText
语法 postNetText(url, propertyList {,serverOSString} {,serverCharSetString})
postNetText(url, postText {,serverOSString} {,serverCharSetString})
描述 命令;以postText作为数据,向一个HTTP URL发送POST请求。
本命令同getNetText()相仿。同使用getNetText()一样,当netDone(netID)变为1,并且netError(netID)为0或"OK",服务器以netTextResult(netID)作为响应。
若用属性列表代替字符串,信息以浏览器发出一个HTML表单同样方式发送,METHOD=POST。这简化了在director作品内创建和发送表单数据。属性名对应HTML表单域名而属性值对应域的值。
这里的属性列表可用字符串或符号之一作为属性名。如果用符号,它会被自动转换为没有开头#的字符串。类似地,当一个数值型数据作为属性值时,也被自动转换成字符串。
注意:如果一个程序使用交替表单--用字符串代替属性列表--字符串postText将使用MIME类型“text/plain”作为一个HTTP POST请求发送到服务器。在某些应用中这将十分方便,但与HTML表单的发送不兼容。
可选的参数serverOSString默认为UNIX但可以设置为Windows或Mac并且把postText参量内的所有回车换行转换为服务器端的形式以避免混淆。对大多数应用,本设置不是必要的,因为在表单响应中通常不用换行。
可选的参数serverCharSetString仅当用户工作于Shift-JIS (Japanese)系统才使用。可能的设置是"JIS","EUC","ASCII"和"AUTO"。被发送的数据从Shift-JIS转换成指定的字符集。返回值仍由getNetText()处理(由指定的字符集转换为Shift-JIS)。如果使用"AUTO",以本地字符集发送的数据不作转换。由服务器送回的结果转换为getNetText()指定的字符集,如果省略了serverCharSetString,默认为"ASCII"。"ASCII"将不为发送或结果提供转换。
可选的参量可忽略掉而无须考虑位置。
本命令与getNetText()相比还有另外的优点:postNetText()查询可以无限长,而getNetText()查询受限于浏览器的URL长度(1K或4K,取决于浏览器)。
注意:如果你用postNetText向一个不同于当前正在播放电影的机器所属的域发送数据,且电影以shockwave模式播放时,将会显示一个安全性警告。
要观看在完整的电影中使用postNetText的实例,参看Director应用程序下Learning\Lingo Examples子目录下的电影:Forms and Post。
实例 本语句省略了serverCharSetString参数:
netID = postNetText("www.mydomain.com\database.cgi", "Bill Jones", "Win")
实例 本语句根据用户在文本域的输入生成first name和last name,以及分数Score。注意serverOSString和serverCharSetString两个参数都被省略了:
lastName = member("Last Name").text
firstName = member("First Name").text
totalScore = member("Current Score").text
infoList = ["FName":firstName, "LName":lastName, "Score":totalScore]
netID = postNetText("www.mydomain.com\userbase.cgi", infoList)
参看 getNetText(),netTextResult(),netDone(),netError()
power()
语法 power(base, exponent)
描述 数学函数;计算指定的底数base、指数exponent的乘方值。
实例 本语句把变量vResult设定为4的三次方:
set vResult = power(4,3)
preLoad (命令)
语法 preLoad
preLoad toFrameNum
preLoad fromFrame, toFrameNum
描述 命令;把指定范围帧的演员预装入内存,且当内存满或所有指定的演员装入后停止,如下:
当不带参量时,本命令把一个电影的当前帧开始至最后一帧的所有演员预装入内存。
当带有一个参量toFrameNum (译注:此处少Num三个字母,补上),本命令把当前帧开始至帧toFrameNum的所有演员预装入内存,帧toFrameNum,用帧编号或标签名来指定帧。
当带有二个参量fromFrame和toFrameNum,把帧fromFrame到帧toFrameNum的所有演员预装入内存,用帧编号或标签名指定帧。
命令preLoad同时返回成功装入的最后一帧的编号。要得到该值,使用result函数。
实例 本语句预装从当前帧开始到下一个标签处的演员:
preLoad marker (1)
实例 本语句预装第10帧到第50帧需要的演员:
preLoad 10, 50
参看 preLoadMember
preLoad (演员属性)
语法 member(whichCastMember).preLoad
the preLoad of member whichCastMember
描述 演员属性;决定由whichCastMember指定的数字视频演员可(TRUE)否(FALSE, 默认值)预调入内存。状态TRUE与在数字视频演员属性对话框中选中Preload等效。
对于Flash电影演员,本属性控制在sprite的第一帧显示前是否把整个Falsh电影预调入内存(TRUE),或这个电影是否可在播放时以流式传输进入内存(FALSE,默认)。本属性只对链接的Flash电影起作用,它的内容存储在外部文件中;对内容已存入演员表内演员不起作用。属性streamMode和bufferSize决定演员怎样以流的方式进入内存。
本属性可检测和设置。
实例 本语句在消息窗口内报告QuickTime电影"Rotating Chair"是否能被预调入内存:
put member("Rotating Chair").preload
实例 本startMovie处理程序把一个Flash电影设为流式传输并且设置它的bufferSize属性:
on startMovie
member("Flash Demo").preLoad = FALSE
member("Flash Demo").bufferSize = 65536
end
参看 bufferSize, streamMode
preLoadBuffer 演员
语法 member(whichCastMember).preLoadBuffer()
preLoadBuffer member whichCastMember
描述 命令;把指定的Shockwave音频(SWA)文件的一部分预调入内存。预调入的数量由属性preLoadTime决定。本命令只在相应的SWA演员停止时起作用。
当命令preLoadBuffer执行成功,演员state属性值为2。
大多数SWA演员属性只能在preLoadBuffer命令成功完成后才能被检测。这些属性包括:cuePointNames,cuePointTimes,currentTime,duration, percentPlayed,percentStreamed,bitRate,sampleRate,和numChannels。
实例 本语句把演员"Mel Torme"装入内存:
member("Mel Torme").preLoadBuffer()
参看 preLoadTime
preLoadEventAbort
语法 the preLoadEventAbort
描述 电影属性;确定击键或点击鼠标能(TRUE)否(FALSE,默认)终止演员的预装。
本属性可检测和设置。设置本属性对当前电影有效。
实例 本语句让用户通过击键或点击鼠标终止演员的预装:
set the preLoadEventAbort = TRUE
参看 preLoad (command), preLoadMember
preLoadMember
语法 preLoadMember
member(whichCastMember).preLoad()
preLoadMember whichCastMember
member(fromCastmember).preLoad(toCastMember)
preLoadMember fromCastmember, toCastmember
描述 命令;预装演员,当装入全部指定的演员或内存满时停止。命令preLoadMember返回最后一个成功装入的演员的编号。用函数result得到此值。
当不带参量,preLoadMember预装电影中的所有演员。
当带参量whichCastMember,preLoadMember只预装那个演员。若whichCastMember是一个整数,则只参照第一个演员表。若whichCastMember是一个字符串,则使用第一个如此命名的演员。
当带有参量fromCastmember和toCastmember,命令preLoadMember预装由演员编号或名称所指定范围的所有演员。
实例 本语句预装第一个(内部)演员表的演员20:
member(20).preLoad()
实例 本语句预装入演员"Shrine"及相应演员表内其后的10个演员:
member("Shrine").preLoad(member("Shrine").number + 10)
实例 要预装某指定演员表内的指定演员,使用下面的语法:
member("Mumia Abu Jamal", "Black Panthers").preLoad()
preLoadMode
语法 castLib(whichCast).preLoadMode
the preLoadMode of castLib whichCast
描述 演员表属性;决定指定的演员表预装入模式,与演员表属性对话框中的Preload(donlee译注:原文误为Load Cast)设置等效。可能的值如下:
0 需要时装入。
1 在第一帧前装入。
2 在第一帧后装入。
默认值为0,当需要时装入。
通常on prepareMovie处理程序是放入lingo的好地方,来确定演员何时装入。
本属性可检测和设置。
实例 下面的语句告诉Director在电影进入第一帧前装入演员表"Buttons"内的演员:
CastLib("Buttons").preLoadMode = 1
preLoadMovie
语法 preLoadMovie whichMovie
描述 命令;预调入与指定电影第一帧相关联的数据和演员。对用go to movie或play movie命令启动的电影,预调入可加快启动速度。
要从一个URL调入演员,使用preloadNetThing()把相关演员直接调入缓存,或用downLoadNetThing把电影装入本地磁盘,从而可以把电影从磁盘调入内存,以减少下载时间。
实例 本语句装入当前电影所在目录下的电影"Introduction":
preLoadMovie "Introduction"
preloadNetThing()
语法 preloadNetThing (url)
描述 函数;从internet装载文件到本地缓存,以便以后使用时减少下载的延时。用任何有效的internet文件,如director电影,图片或FTP服务器内的位置名称来代替url。返回值是一个人可以用来监视操作进度的网络ID。
用于Java的Director播放器不支持本命令,因为Java的安全模式不允许写到本地磁盘。
函数preloadNetThing()在当前电影播放的同时下载文件。用netDone()来确定下载是否完成。
一项下载完成后,它可以立即被显示出来,因为它是从本地缓存而不是从网络中取出。
尽管在同一时刻可以激活多个网络操作,并发执行四个以上操作通常会导致难以接受的缓慢。
无论缓存容量还是浏览器偏好设置的文献检查选项都不影响preloadNetThing函数的操作。
preloadNetThing()函数不分析Director文件的链接,即使在Director文件链接到演员表和图形文件时也如此。preloadNetThing()只下载director文件。你还须分别下载其它链接的对象。
实例 本语句使用preloadNetThing()并且返回这个操作的网络ID:
set mynetid = preloadNetThing("http://www.yourserver.com/menupage/mymovie.dir")
下载完成后,你可以使用同一URL导向该电影。电影将从缓存中而不是从相关URL开始播放,因为它已经被下载到本地缓存了。
参看 netDone()
preLoadRAM
语法 the preLoadRAM
描述 系统属性;指定预先装入数字视频所能用的RAM容量。本属性可设置和检测。
本属性对管理内存有用,把数字视频演员限定在一定的内存容量内,所以其它类型的演员仍可被预调入。当preLoadRAM为FALSE,所有可用内存均可用于预先调入数字视频演员。
然而,预先调入数字视频时,不可能可靠地预见它需要多少内存,因为内存的需求受到电影内容、压缩程度、关键帧数量、图象的变化等等因素的影响。
通常预先调入视频的最初几秒然后从那一点用流的方式继续是安全的。
如果知道电影的数据速率,可以估计preLoadRAM的设置。例如, 如果电影具有每秒300K的数据速率,如果想预调入2秒的视频则把preLoadRAM设为600K。这只是一个估算,但在大多数场合合适。
实例 本语句把preLoadRAM设为600K,预调入最初2秒具有每秒300K数据速率的电影:
set the preLoadRAM = 600
参看 loop (keyword), next
preLoadTime
语法 member(whichCastMember).preLoadTime
the preLoadTime of member whichCastMember
sound(channelNum).preLoadTime
描述 演员和声音通道属性;对于演员,在开始播放前或使用了preLoadBuffer命令后,指定相关流式传输Shockwave音频(SWA)演员要下载的容量,以秒计。
本属性只在SWA流式传输的演员停止时才可以设置。
对于声音通道,它的值赋予队列里的声音,若没有指定,则指正在播放的声音。
实例 本处理程序把SWA流式传输的演员"Louis Armstrong"预先下载的时间设定为6秒。当使用了命令preLoadBuffer或play时,实际的载入操作才发生。
on mouseDown
member("Louis Armstrong").stop()
ember("Louis Armstrong").preLoadTime = 6
end
实例 本语句返回正在声音通道1中播放的声音的preLoadTime:
put sound(1).preLoadTime
参看 preLoadBuffer member
on prepareFrame
语法 on prepareFrame
语句
end
描述 系统消息和事件处理程序;包含的语句在画当前帧以前立即执行。
与beginSprite和endSprite事件不同,每次播放头进入帧时都产生prepareFrame事件。
处理程序on prepareFrame是一个在sprite画出前改变sprite属性的有用的地方。
如果用于行为,处理程序on prepareFrame接收me引用。
命令go,play和updateStage在on prepareFrame处理程序内无效。
实例 本处理程序设置行为所属sprite的locH属性:
on prepareFrame me
sprite(me.spriteNum).locH = the mouseH
end
参看 on enterFrame
on prepareMovie
语法 on prepareMovie
语句
end
描述 系统消息和事件处理程序;所包含的语句在电影调入演员后、做下列事情前执行:
建立所播放的第一帧中sprite所属行为的实例。
预备播放第一帧,包括画出此帧,播放任何声音、以及执行过渡和调色板效果。
用于第一帧sprite行为的新全局变量应在处理程序on prepareMovie中初始化。在以前的电影已经设定的全局变量无需复位。
处理程序on prepareMovie是一个放置lingo的好地方,以建立全局变量、初始化变量、在电影其余部分调入内存的同时播放声音、或检查与调整计算机状态(如色深)的好地方。
命令go,play和updateStage在处理程序on prepareMovie中无效。
实例 本处理程序在电影启动时建立一个全局变量:
on prepareMovie
global currentScore
set currentScore = 0
end
参看 on enterFrame, on startMovie
previous
参看 go previous
printFrom
语法 printFrom fromFrame {,toFrame} {,reduction}
描述 命令;打印自fromFrame开始的每帧在舞台上显示的内容,无论该帧是否被选中。作为选项,你可以提供toFrame和一个缩减值(100%, 50%, 或 25%)。
被打印的帧当前无须显示。本命令总是以每英寸72点(dpi)打印,把屏幕上所有内容位图化(某些情况下文本可能不如原来平滑),以列方向打印,并且忽略页面设置。为了在Director中打印更具伸缩性,参看安装盘上的PrintOMatic Lite Xtra。
实例 本语句打印帧1舞台的内容:
printFrom 1
本语句打印自标志符"Intro"到标志符"Tale"所有帧的舞台内容。缩减值为50%。
printFrom label("Intro"), label("Tale"), 50
property
语法 property {property1}{, property2} {,property3} {...}
描述 关键字;把property1, property2等等声明为属性变量。
在父脚本或行为脚本的开头声明属性变量。你可在父脚本或行为脚本外通过使用the操作符来存取它们。
注意:属性spriteNum对所有行为均可用,且只需声明即可使用。(donlee译注:似应改为无需声明)
你可以在父脚本或行为脚本中不使用me关键字来引用属性。然而,要引用父脚本的祖先,要使用me.property格式。
对于行为,在某行为内定义的属性,属于该sprite的其它行为也可用。
你可以用类似控制其它属性一样的语法从对象父脚本外部,直接控制一个子对象的属性。例如,本语句设定一个子对象的motionStyle属性:
set the motionStyle of myBouncingObject to #frenetic
在一个子对象的父脚本内部用函数count来确定属性的个数。用getPropAt找到这些属性的名称。用setaProp()给对象增加属性。
要观看属性实例的完整电影,参看Director应用程序Learning\Lingo子目录下的电影"Parent Scripts"。
实例 本语句使从单一父脚本创建的每个子对象具有各自的location和velocity设置:
property location, velocity
实例 本父脚本处理程序声明了属性pMySpriteNum以使它可用:
-- 前代脚本
property pMyChannel
on new me, whichSprite
me.pMyChannel = whichSprite
return me
end
最初的行为脚本设置了祖先并把属性spriteNum传给了所有行为:
property spriteNum
property ancestor
on beginSprite me
set ancestor = new(script "Elder", spriteNum)
end
参看 me, ancestor, spriteNum
proxyServer
语法 proxyServer serverType, "ipAddress", portNum
proxyServer()
描述 命令;设置一个FTP或HTTP代理服务器的值,如下:
serverType-#ftp或#http
ipAddress-一个含IP地址的字符串
portNum-表示端口号的整数值
如果你用proxyServer()语法,返回一个FTP或HTTP代理服务器的设置。
实例 本语句设置一个IP地址为197.65.208.157,使用端口5的HTTP代理服务器:
proxyServer #http,"197.65.208.157",5
实例 本语句返回一HTTP代理服务器的端口号:
put proxyServer(#http,#port)
如果没有指定服务器的类型,本函数返回1。
实例 本语句返回一个HTTP代理服务器的IP地址字符串:
put proxyServer(#http)
实例 本语句关闭一个FTP代理服务器:
proxyServer #ftp,#stop
ptToHotSpotID()
语法 ptToHotSpotID(whichQTVRSprite, point)
描述 QuickTime VR函数;如果指定点是热点,则返回其ID。如果没有热点,本函数返回0。
puppet
语法 sprite(whichSprite).puppet
the puppet of sprite whichSprite
描述 Sprite属性;确定由whichSprite指定的sprite通道是(TRUE)否(FAUSE,默认)木偶化在Lingo控制之下。
如果某sprite通道是一个木偶,Lingo对此通道sprite的属性所做的任何改变在播放头离开此sprite后保持有效。
如果一个sprite通道不是木偶,Lingo对sprite所做的任何改变持续时间仅为当前sprite的生存期。
当播放头在同一sprite,设定这个通道的sprite的puppet属性为FALSE将把此sprite属性恢复为Score中设定的值。
把sprite通道设为木偶可让你在播放头离开这个sprite后通过Lingo控制许多sprite属性,诸如成员,locH,和宽度。
设定sprite的puppet属性与使用puppetSprite命令等效。例如,下述语句是等效的:set the puppet of sprite 1 to TRUE 和 puppetSprite 1, TRUE。
本属性可检测和设置。
实例 本语句把编号为i+1的sprite设为木偶:
sprite(i + 1).puppet = TRUE
实例 本语句通过把sprite属性puppet值赋给变量来记录sprite 5是否为木偶。当sprite 5是木偶,isPuppet被设置为TRUE。当sprite 5不是木偶,isPuppet被设置为FALSE。
isPuppet = sprite(5).puppet
参看 puppetSprite
puppetPalette
语法 puppetPalette whichPalette {, speed} {,nFrames}
描述 命令;导致调色板通道表现为木偶,并且使Lingo无视Score内调色板通道的调色板设置而向电影指定调色板。
命令puppetPalette把由whichPalette指定的演员设定为当前的调色板。如果whichPalette为字符串,则它指定调色板的演员表(donlee译注:似应为 cast member 演员)名。如果whichPalette是一个整数,则它指定调色板的演员编号。
为得到最好结果,在进入这种效果生效的那一帧以前使用puppetPalette命令,从而Director能在画出下一帧前映射到希望的调色板上。
你可以用1(最慢)到60(最快)的整数代替speed的值以渐显调色板,也可以用表示帧数目的整数代替nFrames来用多帧渐显调色板。
木偶调色板一直有效,直到用命令puppetPalette 0关闭它。木偶化的调色板有效时,Score中后续的调色板都不被遵守。
注意:浏览器控制着整个Web页的调色板。因而,Shockwave和Java Director播放器总是使用浏览器的调色板。
当为Java Director播放器制作电影,为使颜色最可靠,应使用创作系统的默认调色板。
实例 本语句把"Rainbow"设定为电影的调色板:
puppetPalette "Rainbow"
实例 本语句把"Grayscale"设定为电影的调色板。向"Grayscale"调色板的过渡发生于标记为"Gray"和"Color"的帧之间,时间为15。
puppetPalette "Grayscale", 15, label("Gray") - label("Color")
puppetSound
语法 puppetSound whichChannel, whichCastMember
puppetSound whichCastMember
puppetSound member whichCastMember
puppetSound 0
puppetSound whichChannel, 0
描述 命令;把相应的声音通道设为木偶,播放由whichCastMember指定的声音演员,并使Lingo无视Score中赋予该声音通道的任何声音。
用通道号来代替whichChannel以指定一个声音通道。
播放头移动或执行updataStage命令后,声音开始播放。演员编号参量为0则停止声音的播放。同时把声音通道的控制还给Score。
要在不同的电影正调入内存的同时播放声音,木偶化的声音有用。
Java Director播放器支持puppetSound命令的下列版本:
puppetSound whichChannel, whichCastMember 或 puppetSound whichCastMember?-播放声音。
puppetSound 0 或 puppetSound whichChannel, 0 -停止声音。
实例 本语句在Lingo控制下播放声音"Wind":
puppetSound "Wind"
实例 本语句关闭正在通道2播放的声音:
puppetSound 2, 0
参看 sound fadeIn, sound fadeOut, sound playFile, sound stop
puppetSprite
语法 puppetSprite whichChannel, state
描述 命令;确定由whichSprite指出的sprite通道是木偶且由Lingo控制(TRUE),或不是木偶且由Score控制(FALSE)。
播放头在同一sprite的同时,用命令puppetSprite whichSprite, FALSE关闭该sprite通道的木偶化,恢复在Score中设置的sprite属性。
该sprite通道的初始属性就是当puppetSprite命令执行时该通道的所有设定:
如果一个sprite通道是木偶,在播放头离开该sprite后Lingo对该通道属性所做的任何改变继续有效。
如果一个sprite通道不是木偶,Lingo对sprite所做的任何改变只在当前sprite生存期间有效。
当你使用puppetSprite命令,该通道必须包含sprite。
sprite通道木偶化使你能在播放头离开该sprite后,用Lingo控制sprite的许多属性—诸如memberNum, locH, 和 width。
当完成了用Lingo控制sprite,播放头在不想木偶化的帧内,为了避免发生不可预期的后果,使用命令puppetSprite whichSprite, FALSE来向Score归还控制。
注意:Director版本6引入自动木偶化,从而在大多数场合无须明确地木偶化sprite。如果你想保留对一个通道内容(甚至在这个sprite完成播放之后)的完全控制,甚至在这个sprite完成播放之后,这时明确的控制还是有用的。
实例 本语句把通道15的sprite设为木偶:
puppetSprite 15, TRUE
实例 本语句解除了编号为i+1通道内sprite的木偶化状态:
puppetSprite i + 1, FALSE
参看 backColor, bottom, constraint, foreColor, height, ink, left, lineSize, locH, locV,
memberNum, puppet, right, top, type (sprite property), and width; cursor (command) and puppetSprite
puppetTempo
语法 puppetTempo framesPerSecond
描述 命令;导致tempo通道木偶化,并且设置为由framesPerSecond指定帧数的tempo。当tempo通道是木偶,Lingo能无视Score中的tempo设置且改变赋予电影的tempo。
没有必要关闭tempo的木偶状态来使Score中后续的tempo改变生效。
注意:尽管理论上用puppetTempo命令能把帧速率提高到每秒30,000帧(帧/秒),实际上你只能在动画极少并且极强劲的机器上做到。
实例 本语句把电影的tempo设置为30帧/秒:
puppetTempo 30
实例 本语句把电影的tempo由原来的值提升10帧/秒:
puppetTempo oldTempo + 10
puppetTransition
语法 puppetTransition member whichCastMember
puppetTransition whichTransition {,time} {, chunkSize} {, changeArea}
描述 命令;在当前帧和下一帧间执行指定的过渡。
要使用Xtra过渡演员,应用puppetTransition member后接演员名称或编号。
要使用Director内置的过渡,把whichTransition替换为下表中的某个值。把time替换为用于完成该过渡所用的时间(以四分之一秒为单位)。最小值是0;最大值是120(30秒)。把chunkSize替换为过渡中每个块的象素数。最小值为1;最大值为128。较小的块大小产生更平滑但也更慢的过渡。
代码 过渡 代码 过渡
01 向右涂抹 27 按行随机
02 向左涂抹 28 按列随机
03 向下涂抹 29 向下覆盖
04 向上涂抹 30 向左下方覆盖
05 横向地由中心向外 31 向右下方覆盖
06 横向地从四周向内 32 向左覆盖
07 纵向地从中心向外 33 向右覆盖
08 纵向地从四周向内 34 向上覆盖
09 从中心向外,方形 35 向左上方覆盖
10 从四周向内,方形 36 向右上方覆盖
11 向左推 37 百叶窗
12 向右推 38 棋盘
13 向下推 39 从底部剥除,向左边重建
14 向上推 40 从底部剥除,向右边重建
15 向上揭起 41 从左边剥除,向下边重建
16 向右上方揭起 42 从左边剥除,向上边重建
17 向右揭起 43 从右边剥除,向下边重建
18 向右下方揭起 44 从右边剥除,向上边重建
19 向下揭起 45 从顶部剥除,向左边重建
20 向左下方揭起 46 从顶部剥除,向右边重建
21 向左揭起 47 变焦打开
22 向左上方揭起 48 变焦关闭
23 按像素溶化,快速* 49 纵向百叶窗
24 按矩形框溶化 50 按位溶化,快速*
25 按方框溶化 51 按像素溶化*
26 按图案溶化 52 按位溶化*
当显示器设置为32位时标有星号(*)的过渡无效。
短的时间与快速过渡之间没有直接关系。 过渡的实际速度取决于块大小和时间的关系。例如,如果块大小为1象素,无论时间(设定)多么短,过渡都将花费较长的时间,因为计算机不得不做大量工作。要使过渡更快些,应使用更大的块,而不是更短的时间。
用一个值代替changeArea以确定过渡仅产生于变化的区域(TRUE)还是整个舞台(FALSE,默认)。变量changeArea是一个区域,在其内部sprite发生变化。
实例 本语句执行向右涂抹的过渡。因为没指定changeArea的值,过渡按默认产生于整个舞台。
puppetTransition 1
本语句执行向左涂抹过渡,持续时间1秒,快大小为20,产生于整个舞台:
puppetTransition 2, 4, 20, FALSE
purgePriority
语法 member(whichCastMember).purgePriority
the purgePriority of member whichCastMember
描述 演员属性;指定演员whichCastMember的清除优先级。
演员的清除优先级决定当内存满时Direcotr从内存中选择哪个演员清除。清除优先级高的演员先被清除。下面是可用的清除优先级设置:
0-永不
1-最后
2-下一个
3-正常
“正常”为默认值,随机性地使Director从内存中清除演员。“下一个”,“最后”和“永不”允许对清除进行一些控制,但如果许多演员设置为“最后”和“永不”,可能导致电影运行时内存不足。
当电影的大小超过可用内存时,为演员设置清除优先级对管理内存是有用的。作为一般规则,你可以给频繁使用的演员设置较低的优先级,从而把Director调入演员时的延迟缩减到最小,并且减少相应演员重新调入的次数。
实例 本语句把演员"Background"的清除优先级设为3,当需要内存时,它是最先被清除的演员之一。
member("Background").purgePriority = 3
put
语法 put expression
描述 命令;计算由expression指定的表达式并把结果显示在消息窗口内。本命令可作为一个调试工具使用,在电影运行的同时追踪变量的值。
Java Director播放器把来自put命令的消息显示到浏览器的Java控制台窗口。对控制台窗口的使用取决于浏览器。
实例 本语句在消息窗口显示出时间:
put the time
-- "9:10 AM"
实例 本语句在消息窗口显示出赋给变量"bid"的值:
put bid
-- "Johnson"
参看 put...after, put...before, put...into
put...after
语法 put expression after chunkExpression
描述 命令;计算一个Lingo表达式,把结果转换成字符串,并且把结果字符串插入到一个容器内指定的块后,不替换容器的内容。(如果chunkExpression指出的目标块不存在,串值将插入到容器适当的地方。)
块表达式可指向任何容器内的任何字符、单词,项目,或行。容器包括域演员;文本演员;表示字符串的变量;和指定的字符、单词、项目、行与容器的某个范围。
实例 本语句把字符串"fox dog cat"插入到域演员"Animal List"的内容之后:
put "fox dog cat" after member "Animal List"
用这个语句同样可以完成:
put "fox dog cat" after member("Animal List").line[1]
参看 char...of, item...of, line...of, paragraph, word...of; put...before, put...into
put...before
语法 put expression before chunkExpression
描述 命令;计算一个Lingo表达式,把结果转换成字符串,并且把结果字符串插入到一个容器指定的块之前,不替换容器的内容。(如果chunkExpression指出的目标块不存在,串值将插入到容器适当的地方。)
块表达式可指向任何容器内的任何字符、单词,项目,或行。容器包括域演员;文本演员;表示字符串的变量;和指定的字符、单词、项目、行与容器的某个范围。
实例 本语句把变量"animalList"设置为字符串"fox dog cat"并且把单词"elk"插入到animallist(donlee译注:原文为list)的第二个单词之前。
put "fox dog cat" into animalList
put "elk " before word 2 of animalList
结果为字符串"fox elk dog cat"
用这样的语法也同样可以完成:
put "fox dog cat" into animalList
put "elk " before animalList.word[2]
参看 char...of, item...of, line...of, paragraph, word...of; put...after, put...into
put...into
语法 put expression into chunkExpression
描述 命令;计算一个Lingo表达式,把结果转换成字符串,并且用结果字符串替换一个容器指定的块。(如果chunkExpression指出的目标块不存在,串值将插入到容器适当的地方。)
块表达式可指向任何容器内的任何字符、单词,项目,或行。容器包括域演员;文本演员;表示字符串的变量;和指定的字符、单词,项目,行与容器的某个范围。
当电影作为一个(Java)短程序播放,命令put...into替换容器内的所有文本,而不是文本块。
要给变量赋值,使用set命令。
实例 本语句把域演员"Review Comments"的第二行改为"Reviewed by Agnes Gooch"。
put "Reviewed by Agnes Gooch" into line 2 of member "Review Comments"
用这样的语法可完成文本演员的同样结果:
put "Reviewed by Agnes Gooch" into member("Review Comments").line[2]
参看 char...of, item...of, line...of, paragraph, word...of, put...after, put...before, set...to, set...=
编辑历史:[这消息被ovews编辑过(编辑时间2001-01-19 09:54:22)]