使用MIAW
MIAW的全称为Movie In A Window,即窗口中的电影的意思,它是Director中一份不同寻常的组成部分。通过使用它可以在当前舞台上打开另一个含有Director文件的多媒体影片。
MIAW有很多用途。由于它们是相互独立的,并且也与舞台相互独立,因此它们的活动相对比较灵活,读者可以在任何需要它们的位置调用它们。本节主要向读者介绍一些常用的MIAW命令,以及一些利用MIAW创建窗口的一些方法。
8.7.1 创建MIAW
Lingo语言控制窗口的难易程度是不相同的。如果想要打开一个窗口,以显示一些信息,只需要几行代码。而另一方面,要进一步运用MIAW,需要使用一整套现有的命令、函数、属性和特殊事件处理程序。无论是哪种情况,首先需要的是创建MIAW。本节将向读者介绍创建MIAW的方法。
如果需要创建一个MIAW,则必须存在另一个Director文件。如果需要一个较小的窗口,则还需要事先调整窗口的尺寸大小,并为其指定一个合适的名称(该名称需要在Director中进行调用)。下面的几行代码将调用一个名称为alet的Director电影窗口:
miawobj=window(“演示窗口”)
miawobj.filename=”alet.dir”
maiwobj.visible=true
当我们通过消息窗口,或者利用电影脚本调试程序时,系统将自动打开名称为alet的Director影片,其标题名称为“演示窗口”。如果此时读者利用下面的代码打印输出,则会其标题名称:
put miawobj
--(window “演示窗口”)
实际上,早在miawobj=window(“演示窗口”)一行代码中,我们已经实例化了一个变量maiwobj,通过使用该变量我们还可以执行其他的操作,例如使用下面的一句可以分别关闭或者删除maiwobj对象所指向的窗口:
close(miawobj)
forget(miawobj)
有时,为了方便程序的编写,或者需要在一个程序中多次调用MIAW,这就需要我们将其定义为一个处理例程。通常情况下,我们可以利用下面的子例程来执行一个特定的窗口的调用:
on startMIAW
global miawobj
miawobj=window(“演示窗口”)
miawobj.filename=”alet.dir”
miawobj.visible=true --调用一个影片窗口,并使其显示在舞台上
end
on endMIAW
global miawobj
close(miawobj) --调用完毕后,利用close()关闭窗口
forget(miawobj)
end
这是一个完整的调用过程,首先利用一个实例化的参数调用影片窗口使其显示出来,然后再利用endMIAW子例程将其关闭。不过,在关闭的过程中需要注意:close()仅仅是将窗口关闭,并没有从内存中清除。如果需要彻底卸载某个窗口,则需要使用forget()函数将其清楚掉。
8.7.2 MIAW属性简介
对于MIAW而言,它也存在一系列属于自己的属性,通过使用这些属性可以有效地帮助我们管理和控制窗口。为此,在这里将向读者介绍一些常用属性的功能以及常用的使用方法,详细简介如下:
- visible 该属性用于显示或隐藏窗口。另外,隐藏的窗口也能执行Lingo程序。
- filename 与用于MIAW的Director影片相对应的文件名。如果计算机正在上网,也可以使用某个网址。
- name 该属性是MIAW的名称。这是窗口的缺省标题,并在window结构里用来指代这个窗口。
- title 该属性用在窗口的标题条里以代替name属性。
- titleVisible 当MIAW的类型为-1时,该属性确定MIAW是否显示标题条。
- windowType 可以把该属性设置为-1、0、1、2、3、4、5、8、12、16或49。表8-3列出了Windows平台下这些类型的含义。
表 8-3 窗口类型简介
|
类型编号 |
描述 |
可移动 |
关闭按钮 |
最大化按钮 |
最小化按钮 |
|
-1 |
默认 |
是 |
有 |
无 |
无 |
|
0 |
标准 |
是 |
有 |
无 |
无 |
|
1 |
警告框 |
否 |
无 |
无 |
有 |
|
2 |
矩形 |
否 |
无 |
无 |
无 |
|
3 |
矩形 |
否 |
无 |
无 |
无 |
|
4 |
文件 |
是 |
有 |
无 |
无 |
|
5 |
文件 |
是 |
有 |
无 |
无 |
|
8 |
文件 |
是 |
有 |
有 |
无 |
|
12 |
文件 |
是 |
有 |
有 |
无 |
|
16 |
文件 |
是 |
有 |
无 |
无 |
|
49 |
面板 |
是 |
有 |
无 |
无 |
- drawRect 这个功能强大的属性可以用来缩放MIAW,包括其中的位图。
- rect 这个属性使我们能够剪裁或扩大MIAW,但不发生缩放。
- sourceRect 返回drawRect或rect变化之前的MIAW的原始坐标。
- modal 当某个窗口的这个属性被设置为TRUE时,这个窗口将拦截所有的输入信息,阻止包括舞台在内的其他窗口接收鼠标或按键信息,直至关闭该窗口或该窗口的modal被设置为FALSE时为止。
除了上述的主要属性外,还有一些常用的Director命令,例如open、close等,下面将逐一向读者介绍这些命令的功能。
- open 创建一个新的MIAW,并返回其变量。例如下面的例子将打开一个名称为miawobj的窗口:window(“miawobj”).open()
- close 隐藏一个已有的MIAW,并返回它的变量。不过,此时的窗口仍然驻留在内存当中。
- forget 该命令可以把MIAW从内存里清除。
- moveToFront 该命令可以把MIAW变成最顶层的窗口。
- moveToBack 该命令可以把MIAW变成最底层的窗口。
- tell 该命令可以向MIAW发送一个Lingo命令或处理程序的一次调用。它也可以用来向MIAW发送一组Lingo命令。
8.7.3 系统属性简介
除了上面所介绍的一些属性外,还存在着另外的一些常用属性。它们的使用频率虽然没有上面所介绍的属性的使用频率高,但是同样也可以实现一些特别有用的功能,例如它们可以告诉我们哪些窗口存在,哪些窗口处于激活状态以及哪个窗口位于最高层。关于它们的简介如下:
- the windowList 该属性返回一个列表,其中包含当前全部MIAW,包括不可见的MIAW。如果当前没有窗口,则返回一个空列表。
- the activeWindow 返回当前处于激活状态的窗口的引用变量。如果舞台是当前处于激活状态的窗口,则返回(the stage)。
- frontWindow 返回处于最顶层的的窗口的引用变量。如果是舞台,则返回(thestage)。
- windowPresent() 当为该函数赋予某个窗口的名称时,它可以告诉我们这个窗口是否存在。它只能使用窗口名称,不能使用引用窗口的变量。
我们可以编写一段程序,利用the windowList关闭所有MIAW。它从the windowList里得到窗口的个数,然后用close和forget命令关闭所有窗口:
on closeAllMIAWs
n=count(the windowList)
repeat with i= 1 to n
close window(1)
forget window(1)
end repeat
end
和其他的元素控制指令相同,MIAW也存在很多特殊的事件处理程序,其中包括典型的窗口事件,例如打开、关闭和移动窗口等等。如果读者要使用MIAW,那么就必须使用下面的一些事件,关于它们的简介如下:
- on activateWindow 如果窗口当前没有被激活,而用户点击它想要激活它时,就调用该处理程序。
- on colseWindow 当用户点击关闭按钮关闭窗口,或用close命令关闭窗口时,就调用该处理程序。
- on deactivateWindow—如果该窗口是处于激活状态的,而用户点击了其他窗口,则调用该处理程序把窗口变为非激活状态。
- on moveWindow 用户每次在屏幕上拖动MIAW时,该处理程序被调用。调用的具体时间是在用户释放鼠标按钮的那一刻。
- on openWindow 当MIAW初次被打开时,该处理程序被调用。
- on resizeWindow 每当用户拖动窗口的顶角或边框重新调整窗口的尺寸时,该处理程序被调用。
- on zoomWindow 每当用户点击缩放、最大化或最小化按钮时,该处理程序被调用。
关于程序的这些处理例程,读者可以利用简单的脚本进行调试,以加深对它们的印象。
[1] [2] 下一页