Authorware实战开发专题--Eval与EvalAssign函数的应用(二)

4/8/2006来源:Authorware教程人气:7933

(二)EvalAssign的简单用法

  在上文中我们提到和Eval函数相比,EvalAssign函数的参数参数中可以带赋值号“:=”,具体怎么运用呢?在程序设计中我们往往需要把图标对象动态的改变其移动属性,开始所有的对象都是可移动的,在程序的某个特定时刻,我们需要把对象变为不可移动,如何实现?假设我们所有的对象都命名为“contentX”,其中X为序号,这样的命名将有利于我们程序的控制。我们知道,要“固定”一个对象并不难,在程序中可以这样写:

[email protected]"contentX":=FALSE

  这样就可“固定”序号为X的某个对象,可是如果我们要控制十个,几十个,甚至几百个对象呢,难道我们还用上面的方法一个一个的写程序?用EvalAssign函数可以很简单地解决这个问题,我们只要写上一个程序段就可以实现对所有对象的“固定”,即不可移动属性了:

EvalAssign("[email protected]"content"^number^"":=FALSE")

  其中number是变量,通过对number的取值,就可以达到对各个对象的控制,因此运用EvalAssign函数的关键就是归纳或设计出一个能代表全部元素的通用变量表示式,上面所阐述的原理Eval函数也是通用的。为了加深认识,我们来看一个简单应用的实例,下图1.5为其流程图。它实现一个简单功能:只用一个按钮操作就可顺序切换到框架中的各个分支。


图1.5 EvalAssign简单用法范例

  首先建立如图1.5的流程图,在“Start”计算图标里写入如下公式代码:

ResizeWindow(320,180) ----设置演示屏幕大小

i:=1 ----给自定义变量I赋值

repeat with k:=1 to 5 ----循环设置pic系列显示图标为不可移动EvalAssign("[email protected]"pic"^k^"":=FALSE")

end repeat

  根据图1.5的流程图,我们可以知道范例中的关键是把框架中的显示图标命名为一系列有规律的名称:“pic1”、“pic2”….“pic5”,然后利用EvalAssign系统函数编写通用的代码,按钮响应交互(设置为永久交互)的计算分支“Goto Icon”代码如下:

if i=5 then

i:=0

end if

i:=i+1

EvalAssign("goto([email protected]"pic"^i^"")")


  其中变量“i”为自定义变量,通过它的动态改变而实现循环的切换到框架的各个分支。在程序的开头我们还要对变量“i”赋初值:i:=1,这样可以确保从框架的第一个分支开始进行循环切换。最后运行的效果如下图1.6所示,只要不断的按“Goto Icon”按钮,按钮下面的数字图片,即代表各个分支的图片就会顺序的循环切换。


图1.6 范例演示效果

专题总结

  通过上面的学习,对Eval和EvalAssign两个系统函数的用法是不是有了更深的认识?有了这两个“兄弟函数”,我们就可以在程序中把大批量相同性质的工作做成循环,从而大大地提高程序的运行效率。