----------About "G" Lingo-----------From Freda-----------------
1. getaProp
语法:
propertyList.propertyName
getaProp(list, item)
list[listPosition]
propertyList [ #propertyName ]
propertyList [ "propertyName" ]
描述:
列表命令;对于线性列表和属性列表,确定被条目所指定的与条目相结合的值,被列表所指定的在列表中的位置或属性名。
当列表为线性列表时,用数字取代在列表中条目的位置(listPosition),结果为在此处上的值。
当列表为属性列表时,用列表中作为属性名(propertyName)的属性来取代条目。
当所指定的值不在列表中时获得属性(getaProp)命令返回空值( VOID)。
当用在线性列表中时getaProp命令与getAt命令有同样的功能。
实例:
这个声明确定了在ages这个属性列表中的#joe属性相关连的值,此属性列表包含以下四个属性,#john:10, #joe:12, #cheryl:15, #barbara:22:
put getaProp(ages, #joe)
结果是:12,因为这个值与属性#joe相结合。.
实例: 使用括号方式存取相同的列表也可以得到相同的结果:
put ages[#joe]
结果也是:12。
实例:如果你想得到列表中某一特定位置的值,你也可以用括号的方式。为得到列表中与第三个属性相结合的第三个值,使用这一语法:
put ages[3]
结果为:
-- 15
注释:如果属性不存在你又使用的是括号方式,则会出现脚本错误,不象getAProp命令那样,当一个属性不存在时返回“空”(VOID)。
参见: getAt, getOne(),getProp(),setaProp, setAt
-------------------------------------------------------
2. GetAt
语法: getAt(list, position)
list [position]
描述:列表命令;识别在指定列表中指定位置的某项目的值;如果列表函有比指定位置小的元素,会出现脚本错误。
GetAt命令在线性列表和属性列表中均可使用。 就象getaProp命令对线性列表功能一样有同样的功能。
此命令对于从另一个列表中取出一个列表是非常有用的,如: deskTopRectList.
实例: 这段声明是在信息窗口中显示列表[10, 12, 15, 22]中第3项的值。
put getAt(answers, 3)
-- 15
实例:用中括号方式得到同样的结果:
put answers[3]
-- 15
实例:此例在函有两个指定名称、部门和雇员号信息的列表中取出第一个款目,然后在取出的新列表中取出第2个值,确定雇员列表中第一个人的部门。列表的格式是 [[揇ennis? 揷onsulting? 510], [揝herry? 揇istribution? 973]],并且此列表被称为employeeInfoList。
firstPerson = getAt(employeeInfoList, 1)
put firstPerson
-- ["Dennis", "consulting", 510]
firstPersonDept = getAt(firstPerson, 2)
put firstPersonDept
-- "consulting"
实例:也可以一个套一个,而不必给中间步赋值的方式使用getAt命令。这种方式可能更难读写,但不冗长。
firstPersonDept = getAt(getAt(employeeInfoList, 1), 2)
put firstPersonDept
-- "consulting"
实例 你也可用中括号的方式:
firstPerson = employeeInfoList[1]
put firstPerson
-- ["Dennis", "consulting", 510]
firstPersonDept = firstPerson[2]
put firstPersonDept
-- "consulting"
实例 对于getAt, 中括号可以连在一起用:
firstPersonDept = employeeInfoList[1][2]
参见 getaProp, setaProp, setAt
----------------------------------------------------------
3. on getBehaviorDescription
语法
on getBehaviorDescription
声明
end
描述 系统信息和事件处理程序;当行为被选择时显示在行为监视器中所包含的Lingo字符串
此描述字符串是可选的。
当行为监视器打开时,Director发送行为描述信息(getBehaviorDescription)到此附着在sprite 上的行为中。把getBehaviorDescription 处理事件放到一个行为中。
此处理事件可以包含嵌入的回行字符(Return)的多行描述格式。
实例 此声明显示描述窗口中的"Vertical Multiline textField Scrollbar"
on getBehaviorDescription
return "Vertical Multiline textField Scrollbar"
end
参见 on getPropertyDescriptionList, on getBehaviorTooltip, on runPropertyDialog
-----------------------------------------------------------------------------------------------------------------
4. on getBehaviorTooltip
语法
on getBehaviorTooltip
声明
end
描述 系统信息和事件处理程序;包含在行为库面板中显示的工具提示的字符串Lingo 。
当光标停留在行为库中的某个脚本上时,Director发送“得到行为工具提示”(getBehaviorTooltip)信息到脚本中。将“得到行为工具提示”信息处理程序放在行为中。此处理程序是可选的。如果没有提供处理程序, cast演员的名字会显示在工具提示中。
处理程序包含代表多行格式所嵌入的回行符(RETURN)。
实例 此声明在描述窗口中显示"Jigsaw puzzle piece"。
on getBehaviorTooltip
return "Jigsaw puzzle piece"
end
参见 on getPropertyDescriptionList, on getBehaviorDescription, on runPropertyDialog
-----------------------------
5. getError()
语法: member(whichSWAmember).getError()
getError(member whichSWAmember)
member(whichFlashmember).getError()
getError(member whichFlashmember)
描述 :函数;对于Shockwave Audio (SWA)或 Flash演员, 当演员读入内存并返回一个值时,预示着是否有一个错误出现。
Shockwave Audio 演员有下述可能的 getError() 整数值并有相应的getErrorString() 信息:
getError() value getErrorString()
message
0 确定
1 内存
2 网络
3 回放设备
99 其它
Flash 影片演员可能出现如下错误(getError)值:
FALSE 出错
#memory 内存不足无法导入演员。
#fileNotFound没有找到包含演员的文件。
#network 预防导入演员时的网络错误。
#fileFormat文件已找到但出现文件类型错误,或文件读取时出错。
#其它 发生其它错误。
当演员读入内存时发生一个错误, Director设置演员状态属性为-1。用getError函数测定出现错误的类型。
实例 这个处理程序用getError去测定是否出现一个涉及Shockwave Audio 演员Norma Desmond Speaks的错误,如果出现将错误显示在一个域中:
on exitFrame
if member("Norma Desmond Speaks").getError() <> 0 then
member("Display Error Name").text = member("Norma Desmond \ Speaks").getErrorString()
end if
end
实例 这个处理程序检查一个所看到的Flash演员Dali在读入内存时是否出现错误。如果出现错误,并且是内存错误,脚本用卸载演员(unloadCast)命令试图释放一些内存; 然后播放头跳到Director 影片中标记为Artists 的那帧, 那是此Flash 影片sprite 第一次出现的地方, 所以Director 可以再次试图导入并播放Flash 影片。如果出现其它内存溢出错误,脚本将回到标记为“Sorry”的那帧, 并解释无法播放所需的Flash 影片。
on CheckFlashStatus
errorCheck = member("Dali").getError()
if errorCheck <> 0 then
if errorCheck = #memory then
member("Dali").clearError()
unloadCast
go to frame ("Artists")
else
go to frame ("Sorry")
end if
end if
end
参见 clearError, getErrorString(),state
-------------
6. getErrorString()
语法:
member(whichCastMember). getErrorString()
getErrorString(member whichCastMember)
描述 函数; 对于Shockwave Audio (SWA) 演员, 返回那个错误信息的字符串,相应的错误值是由getError() 函数返回的。
可能的getError()整数值和对应的getErrorString()信息是:
getError() 值 getErrorString()信息
0 确定
1 内存
2 网络
3 回放设备
99 其它
实例 这个处理程序用getError()去测定一个Shockwave Audio 演员 Norma Desmond Speaks 是否出现错误,如果是,用 getErrorString 获得错误信息并记入域演员:
on exitFrame
if member("Norma Desmond Speaks").getError() <> 0 then
member("Display Error Name").text = member("Norma Desmond \ Speaks").getErrorString()
end if
end
参见 getError()
---------------
7. getFlashProperty()
语法:
sprite(spriteNum).getFlashProperty("targetName", #property)
描述:这个函数允许Lingo用函数getProperty()调用所给的Flash sprite的 Flash 行为脚本。这个Flash 行为脚本函数被用于获得影片片段的属性或Flash 影片的层级。 这于在Director 中测定sprite的属性是相似的。
那个targetName(目标名)是你想得到其属性的所给Flash sprite影片片段的名字或层级。
#property是想要得到的属性的名字。这些影片片段的属性是可得到的: #posX, #posY, #scaleX, #scaleY, #visible, #rotate , #alpha, #name, #width, #height, #target, #url, #dropTarget, #totalFrames, #currentFrame, and #lastframeLoaded。
为得到Flash sprite的全局属性,通过一个空的字符串作为targetName。可以得到Flash的这些全局属性:
#focusRect 和 #spriteSoundBufferTime。
看一下那个Flash文件对这些属性的描述。
这个声明获得值sprite 3 中Flash成员Star影片片段的#rotate属性。
sprite(3).setFlashProperty("Star", #rotate)
参见 setFlashProperty()
-----------------------
8. GetFrameLabel
语法: sprite(whichFlashSprite).getFrameLabel(whichFlashFra meNumber)
getFrameLabel(sprite whichFlashSprite, whichFlashFrameNumber)
描述 函数;与所需帧数相结合返回一个Flash影片的帧标签。如果此标签不存在, 或部分Flash 影片尚未读入,此函数返回一个空字符串。
实例 下面的处理程序中,如果sprite 1正在播放的Flash 影片的第15帧标记为"Lions"就显示那一帧。Director 影片导航到"Lions"那帧。如果没有那个标记的话, Director 影片停在当前帧并且Flash 影片继续播放。
on exitFrame
if sprite(1).getFrameLabel(15) = "Lions" then
go "Lions"
else
go the frame
end if
end
-----------------------
9. getHotSpotRect()
语法: sprite(whichQTVRSprite).getHotSpotRect(hotSpotID)
getHotSpotRect(whichQTVRSprite, hotSpotID)
描述 QuickTime VR 函数; 返回一个被指定热区的近似的热区矩形范围。 如果热区不存在或在舞台上不可见,此函数返回rect(0, 0, 0, 0)。如果热区部分可见,这个函数返回可见部分的矩形范围。
------------------
10. getLast()
语法: list.getLast()
getLast(list)
描述 列表函数; 识别list指定的线性列表或属性列表的最后一个值。
实例 此声明得到列表[10, 12, 15, 22]的最后一个项目,结果为22:
put Answers.getLast()
实例 此声明得到Bids属性列表[#Gee:750, #Kayne:600, #Ohashi:850]的最后一个项目,结果为850:
put Bids.getLast()
---------------------------------------------------------------
11. getLatestNetID
语法: getLastestNetID
描述:
这个函数返回一个最近运行的网络操作标识符。
getLatestNetID返回的标识符可以被用做 netDone, netError, 和 netAbort 函数的参数以识别最近的网络操作。
注释:这个函数包括向后兼容性。推荐使用从网络lingo函数返回的网络ID,来代替getLatestNetID。可是,如果你要用getLatestNetID, 请在使用发布netLingo命令后立刻使用。
实例: 这个脚本将getNetText操作的网络ID分配给域演员,就会得到后面的结果。
on startOperation
global gNetID
getNetText("url")
set gNetID = getLatestNetID()
end
on checkOperation
global gNetID
if netDone(gNetID) then
put netTextResult into member "Result"
end if
end
netAbort命令;netDone()和 netError()函数。
------------------------------------------------------------------------------
12. getNetText()
语法: getNetText(URL {, serverOSString} {, characterSet})
getNetText(URL, propertyList {, serverOSString} {, characterSet})
描述: 函数;从通常的HTTP、FTP服务器或允许进入的CGI查询文件中检索文本。
显示的第一个语法是开始检索文本。你可以提交HTTP CGI查询这种方式必须适当地在URL中加些代码。第二个语法中倘若URL带有正确编码时,包括一个属性列表并提交CGI查询。
用可选的参数属性列表(propertyList)得到CGI查询的属性列表。属性列表是加编码的URL并且URL的发送是(urlstring & "?" & encodedproplist)。
用可选参数serverOSString给任何属性列表中的返回字符加代码。默认值是UNIX但或许也可设置成Win或Mac并且将属性列表自变量中携带的返回值解释翻译给这些使用的服务器。对于大多数应用,不需要这个设置,因为在队列响应中不使用断路。
倘若Director运行在shift-JIS(日文)系统中,可应用此可选参数characterSet。 可能的字符集设置是JIS, EUC, ASCII, 和 AUTO。 Lingo从shift-JIS中转化被检索的数据到被命名的字符集。用AUTO设置,字符集试图测试被检索文本中是那种字符集并将其翻译成本地机使用的字符集。默认值是 ASCII字符集。
对于一个作为JAVA程序(applet)的播放影片, getNetText命令检索从包含applet的域中检索文本。这个行为与Shockwave不同并且并且必须在JAVE安全模式下运行。
用netDone 去找到GetNetText操作完成的时间,并用netError 找到此操作是否运行成功。用 netTextResult 返回以getNetText方式检索的文本。
此函数与相关的URL一起工作。
看一个用在已完成影片中getNetText()函数的例子, 参考Director应用文件夹中Learning\Lingo窗体和邮件影片(Forms and Post)实例。
实例: 当鼠标在域上点击抬起时,这个脚本从URL
BigServer.com/sample.txt 检索文本并更新域演员:
property spriteNum
property theNetID
on mouseUp me
theNetID = getNetText ("http://BigServer.com/sample.txt")
end
on exitFrame me
if netDone(theNetID) then
sprite(spriteNum).member.text = netTextResult(theNetID)
end if
end
实例:这个例子检索CGI 查询结果。
getNetText("http://www.yourserver.com/cgi-bin/query.cgi?name=Bill")
实例:这个例子与前例相同,但它用一个属性列表去提交CGI查询,并为你做URL编译。
getNetText("http://www.yourserver.com/cgi-bin/query.cgi", [#name:"Bill"])
参见:netDone(),netError(),netTextResult()
---------------------------------------------------------------
13. getNthFileNameInFolder()
语法: getNthFileNameInFolder(folderPath, fileNumber)
描述: 函数; 从指定路径的文件夹以及文件夹中的序号返回一个文件名。为了用getNthFileNameInFolder 函数实现此功能,在此文件夹结构中的Director 影片必须是可见的。(在Macintosh机器上,无论影片可见与否其它类型的文件均能找到。)如果此函数返回一个空字符串,你可能指定了一个大于文件夹中的文件数的数字。
此getNthFileNameInFolder 函数不能与URL一起工作。
指定其它文件夹名,要用@路径名操作符或影片正在运行的操作平台所指定格式的完整路径。例如:
在Windows中,用一个directory路径如: C:\Director\Movies。
在Macintosh中,用一个路径名如:HardDisk:Director:Movies。要找到Macintosh桌面上的文件,用HardDisk:Desktop夹路径。
这个函数Shockwave中是无效的。
实例:下面的处理程序返回一个当前路径下文件夹的文件名列表。用圆括号呼叫此函数, 并在currentFolder()插入当前的文件夹。
on currentFolder
fileList = [ ]
repeat with i = 1 to 100
n = getNthFileNameInFolder(the moviePath, i)
if n = EMPTY then exit repeat
fileList.append(n)
end repeat
return fileList
end currentFolder
参见 @ (pathname)
---------------------------------------------------------------
14. getOne()
语法:list.getOne(value)
getOne(list, value)
描述
列表函数; 与特殊列表中指定的值结合鉴别线性列表的位置或属性列表中的值。
对于列表中包含多于一个此值时,只显示第一次出现的值。当列表中不包含此值时GetOne命令返回0。
当用在线性列表中,getOne命令的作用相当于getPos命令的作用。
实例
这个声明鉴别Answers 线性列表[10, 12, 15, 22]中值为12的位置。
put Answers.getOne(12)
结果为2, 因为12在列表中排第二。
实例
这个声明与值12相结合鉴别其在属性列表Answers[#a:10, #b:12, #c:15, #d:22]中的位置:
put Answers.getOne(12)
其结果是#b, 它与值12相对应。
参见 getPos()
--------------------------------------------------------------------------
15. getPixel()
语法: imageObject.getPixel(x, y {, #integer})
imageObject.getPixel(point(x, y) {, #integer})
描述: 这个函数返回所给图片对象中指定点像素的颜色值。这个值通常的是一个索引对象或RGB颜色对象,其取决于图象的位深。
如果你包括此可选参数值 #integer, 然而, 它没有作为一个原始数被返回。如果你正将一些像素设定给其它像素,它将更快地将自身设为原数。当图像为32位时,原整数值也是有用的因为它们包含alpha通道层信息以及颜色。此alpha通道信息可以通过除以整数2^8+8+8从原整数中析出。
如果所给像素超出指定图象对象时GetPixel()函数返回0。
实例:下列声明得到演员Happy中点(90,20)像素的颜色 并设定sprite 2为那种颜色。
myColor=member("Happy").image.getPixel(90, 20)
sprite(2).color=myColor
实例: 这个声明设变量alpha为32位图形对象myImage中点(25,33)的alpha通道值。
alpha = myImage.getPixel(25, 33, #integer) / power(2, 8+8+8)
参见: depth, color(),setPixel(),power()
--------------------------------------------------------------------------------------------------------------------
16. getPlaylist()
语法: sound(channelNum).getPlaylist()
getPlaylist(sound(channelNum))
描述: 这个函数返回正等待的soundObject 声音队列的一个拷贝。这个列表不包括当前正在播放的声音。
声音队列的列表或许不能被直接编辑。必须用setPlayList()函数。
此playlist是带有属性列表的线形列表。每一个属性列表对应等待队列中的一个声音演员。每一个等待的声音或许指定这些属性:
属性描述:
#member 要播放的声音演员。 这个属性一直存在;所有其它属性是可选的。
#startTime 声音中播放开始的时间,以毫秒计算。见startTime。
#endTime 声音中播放结束的时间,以毫秒计算。见endTime。
#loopCount 播放一段声音循环的次数。见loopCount。
#loopStartTime 声音中循环开始的时间,以毫秒计算。见loopStartTime。
#loopEndTime 声音中循环结束的时间,以毫秒计。见 loopEndTime。
#preloadTime 重放前预导入缓存的声音数,以毫秒计算。见preloadTime。
实例: 这个处理程序在声音通道2中有两个等待的声音,开始播放它们,然后显示在信息窗口显示playList列表。注意playlist只包括第2个等待的声音,因为第一个声音已经播放。
on playMusic
sound(2).queue([#member:member("chimes")])
sound(2).queue([#member:member("introMusic"), #startTime:3000,\
#endTime:10000, #loopCount:5,#loopStartTime:8000, #loopEndTime:8900])
sound(2).play()
put sound(2).getPlaylist()
end
-- [[#member: (member 12 of castLib 2), #startTime: 3000, #endTime: 10000, #loopCount: 5, #loopStartTime: 8000, #loopEndTime: 8900]]
参见: endTime, loopCount, loopEndTime, loopStartTime, preLoadTime, queue(),setPlaylist(),startTime
------------------------------------------------------------------------
17. getPos()
语法:list.getPos(value)
getPos(list, value)
描述
列表函数; 用值来鉴别其在指定列表中的位置。当此值不在列表中时getPos命令返回0。
当列表中含有两个以上的此值时,显示第一次出现的情况。这个命令应用在线性列表中时与getOne命令作用相同。
实例
这个声明鉴别值12在列表 Answers[#a:10, #b:12, #c:15, #d:22]中的位置:
put Answers.getPos(12)
结果为2, 因为12 在列表中排第二。
参见 getOne()
----------------------------------------------------------------------------------------------
18. getPref()
语法: getPref(prefFileName)
描述
函数; 重新找回指定文件中的内容。
当你用这个函数时, 用由setPref 函数创建的文件名来代替prefFileName。如果无此文件存在getPref 返回 空(VOID)。
所用的文件名prefFileName 只需是一个有效的文件名,而不需完整路径;Director会补全路径。文件路径为 Director处理程序路径。此唯一有效的文件prefFileName是 .txt 和 .htm文件;任何其它存在的文件被拒绝。
不要用此命令访问只读文件或被锁定的媒体。
注释:在浏览器中,用setPref 写的数据不是保密的。任何Shockwave 影片可以读取这个信息并可将其上载到一个服务器上。不应用setPref.存储秘密信息。
看看一个完整影片中使用getPref的例子,浏览Director应用文件夹中Examples文件夹中 Learning\Lingo读写文本影片的例子。
实例
这个处理程序重新找到测试文件的内容并将其分配给Total Score域:
on mouseUp
theText = getPref("Test")
member("Total Score").text = theText
end
参见 setPref
----------------------------------------------------------------