Eval与EvalAssign函数的应用

2016-03-18 16:16 1 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的Eval与EvalAssign函数的应用,手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - 设计软件 】


 精通Authorware的开发应用,从某种程度上说取决于是否熟悉掌握运用函数和变量。可是,在众多的Authorware系统函数中,你是否挖掘过Eval和EvalAssign这两个系统函数呢?下面我们就一起来见识一下Eval和EvalAssign这一对兄弟函数的“绝活”吧。

  Eval和EvalAssign这两个系统函数的功能十分相似,只是用法存在差异而已,因此我们称它们为“兄弟函数”。

Eval的表达式如下:

result := Eval("expression"[, "decimal", "separator"])

  Eval函数的功能是计算表达式expression的值,并将该值赋给result,在该函数的expression表达式中,不能包含赋值操作符“:=”。

Eval的“兄弟函数”EvalAssign的表达式如下:

result := EvalAssign("expression" [, "decimal", "separator"])

  EvalAssign函数的功能同Eval相似,计算表达式expression的值,并将该值赋给result,在该函数的expression表达式中,可以包含赋值操作符“:=”。

  由此可见,和Eval函数相比,EvalAssign的参数中可以带赋值号“:=”,即它的参数可以是一个赋值语句,而Eval函数则不行。下面我们简单介绍一下Eval函数与EvalAssign函数的具体用法。

(一)Eval的简单用法

图1.1 Eval简单用法范例

  这里我们引用一个范例来说明Eval的简单用法。我们要实现一个简单的计算:提示用户输入一个代数表达式,然后计算出并得出该表达式的值。程序流程图如上图1.1,开始的计算图标是设置演示屏幕的大小,接下来的显示图标“输入提示”提示用户输入一个代数表达式,文本输入交互“*”可接受用户的任意一个字符串输入,然后求值。在这个范例的核心问题就是:用文本交互接受的用户输入“EntryText”是一个字符串,然后怎样将该字符串转化为一个代数表达式,并求出其值?通过Eval函数,我们可以很容易的解决这个问题,如图1.2和图1.3所示,计算图标的表达式如下:

statment:=EntryText^"="^Eval(EntryText)
  这里求出的用户自定义变量statement是一个字符串,有三部分组成:用户输入的原字符串、“=”符号、结果值,三部分是通过连接符号“^”连接起来的。至于显示图标“显示结果”,只是实现显示变量字符串statement的功能,可直接用文本工具写上{statement}即可。例如:用户输入“4+8”回车,屏幕将显示最后结果“4+8=12”,如图1.4所示。通过这个小小的范例是不是从中得到一点关于Eval函数用法的启示?


图1.2 Eval简单用法范例文本交互内容


图1.3 Eval简单用法范例文本交互内容

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/shejiruanjian/)


图1.4 Eval简单用法范例运行结果

(二)EvalAssign的简单用法

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

Movable@"contentX":=FALSE

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/shejiruanjian/)

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


图1.5 EvalAssign简单用法范例

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

ResizeWindow(320,1tuLaoShi.com80) ----设置演示屏幕大小

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

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

end repeat

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

if i=5 then

i:=0

end if

12下一页

来源:https://www.tulaoshi.com/n/20160318/1889465.html

延伸阅读
在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉,典型的应用就是Windows资源管理器中的目录列表。在VB中,树型列表控件包含在MicrosoftWindowsCommonControl6.0(也可能是5.0,视你的VB或者系统版本而定)中。在WindowsAPI中,有一系列的以TVM_开头的...
标签: Web开发
《JavaScript语言精髓与编程实践》的读者I22141提出了一问题:为什么下面这段代码在JScript和SpiderMonkey中表现不一样: -------- var func = eval("(function(){})"); alert(typeof func); -------- 更进一步的问题是,书中对匿名和具名函数在JScript与SpiderMonkey中的表现解释得不够清楚。好的,这篇文章就这个...
标签: Web开发
javascript的作用域是词法作用域(lexical scope or static scope),也就是说作用域链在定义的时候就确定了。也提到eval、with会扰乱作用域链(dynamic scope)。 eval IE下:运行eval()会受当前作用域限制,运行execScript()则无视当前作用域,直接在全局作用域下执行。 Firefox下:eval()和window.eval()效果不一样,这...
标签: 电脑入门
Excel是一个用的办公软件,是办公人员必备的。有的时候在用excel的时候需要加快工作效率利用到各种函数,今天图老师小编给大家介绍Excel中VLOOKUP函数的应用。好多人对这个函数还是蛮陌生的吧。那么首先了解Excel中VLOOKUP函数代表什么意思? 就是纵向查找函数,它与LOOKUP函数和HLOOKUP函数属于一类函数,VLOOKUP是按列查找,最终返回该列...
  检查 JScript 代码并执行. eval( codeString ) 必选项 codestring 参数是包含有效 JScript 代码的字符串值。这个字符串将由 JScript 分析器进行分析和执行。 说明 eval 函数答应 JScript 源代码的动态执行。例如,下面的代码创建了一个包含 Date 对象的新变量 mydate : eval ("var mydate = new Dat...

经验教程

194

收藏

45
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部