📄 scripting_4__object_selection.html
字号:
<html><head><meta name="robots" content="index,follow">
<title>脚本 4. 对象选取</title></head><body bgcolor="#FFFFFF">
<table border=0 cellpadding=0 cellspacing=0><tr><td bgcolor="#CCCC00"><table border=4 cellpadding=9><tr><td align=middle bgcolor="#000000"><font face="Palatino,Times" size=6 color="#999900"><b>
脚本 4. 对象选取
</b></font></table></table>
<p>
本章介绍如何使用脚本代码选中对象,以及如何获知当前选中的是什么对象。</p>
<h3>
选中对象</h3>
<p>
可以用以下命令模拟在对象列表中单击与拖曳鼠标来选取对象的动作:</p>
<dl>
<dt>
<b>select</b> <i>对象</i>
<dd>
选中一个对象,同时撤销对其他对象的选取。如果还有更多同名对象,将选中最近创建的那个(也就是对象列表中最靠下的):
</dl>
<code>
<b>select</b> Sound hallo<br></code>
<code>
Play<br></code>
<dl>
<dt>
<b>plus</b> <i>对象</i>
<dd>
在当前选中的对象之外增加选中一个对象。
<dt>
<b>minus</b> <i>对象</i>
<dd>
从当前选中的对象之中撤销选中一个对象。
<dt>
<b>select all</b>
<dd>
选中所有的对象:
</dl>
<code>
<b>select all</b><br></code>
<code>
Remove<br></code>
<p>
Praat外壳对于新建的对象总是自动选中。脚本里面也一样:</p>
<code>
! 创建正弦波,播放出来,并绘制声谱。<br></code>
<code>
Create Sound... sine377 0 1 10000 0.9 * sin (2*pi*377*x)<br></code>
<code>
Play<br></code>
<code>
To Spectrum<br></code>
<code>
! 绘制Spectrum对象:<br></code>
<code>
Draw... 0 5000 20 80 yes<br></code>
<code>
! 移除刚创建的Spectrum及Sound对象:<br></code>
<code>
<b>plus</b> Sound sine377<br></code>
<code>
Remove<br></code>
<p>
除对象名称之外,还可通过流水号选中对象:</p>
<code>
<b>select</b> 43<br></code>
<p>
该命令选中Praat程序自启动以来创建的第43个对象(参看下文)。</p>
<h3>
查询选中对象</h3>
<p>
可以获取一个选中对象的名称,并向一个字符串变量赋值。比如,下面的命令将读取选中对象中第2个Sound(声音)对象的名称(在对象列表中从上向下计数),赋予变量<i>name</i>$:</p>
<code>
name$ = <b>selected$</b> ("Sound", 2)<br></code>
<p>
如果Sound对象名为“Sound hallo”,变量<i>name</i>$将包含字符串“hallo”。获取选中的第1个Sound对象时,还可以省略那个数目:</p>
<code>
name$ = <b>selected$</b> ("Sound")<br></code>
<p>
可以使用负数实现从下向上的计数。于是,为了得到选中的最后一个Sound对象的名称,可以这么写:</p>
<code>
name$ = <b>selected$</b> ("Sound", -1)<br></code>
<p>
可能会用到<b>selected$</b>在画板中印出对象的名称:</p>
<code>
Draw... 0 0 0 0 yes<br></code>
<code>
name$ = <b>selected$</b> ("Sound")<br></code>
<code>
Text top... no This is sound 'name$'<br></code>
<p>
然而,这种方法恐怕并不适合用来唯一地引用一个既往选中对象,因为可能有多个对象重名:</p>
<code>
# 下面这两行没问题:<br></code>
<code>
soundName$ = <b>selected$</b> ("Sound", -1)<br></code>
<code>
pitchName$ = <b>selected$</b> ("Pitch")<br></code>
<code>
# 但接下来这一行有问题,因为并不能保证<br></code>
<code>
# 必然重新选中前面选中过的那个Sound对象:<br></code>
<code>
<b>select</b> Sound 'soundName$'<br></code>
<p>
不要用这种可能造成错误的方法,而要改为获取对象唯一编号的方法。前面示例的正确版本如下:</p>
<code>
sound = <b>selected</b> ("Sound", -1)<br></code>
<code>
pitch = <b>selected</b> ("Pitch")<br></code>
<code>
# 改正的:<br></code>
<code>
<b>select</b> sound<br></code>
<p>
想要获取选中对象总数并存入一个变量的话,这样做:</p>
<code>
numberOfSelectedSounds = numberOfSelected ("Sound")<br></code>
<h3>指向本页的链接</h3>
<ul>
<li><a href="Scripting.html">脚本</a>
</ul>
<hr>
<address>
<p>© ppgb, February 22, 2004</p>
<p>© 翻译:徐清白,2005年05月24日</p>
</address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -