麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > 媒體動畫 > 正文

Authorware類和函數:Eval與EvalAssign函數地運用

2024-09-08 19:24:38
字體:
來源:轉載
供稿:網友
作者:hellrock @汕大4u2v工作室

  精通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簡單用法范例文本交互內容


圖1.4 eval簡單用法范例運行結果

(二)evalassign的簡單用法

  在上文中我們提到和eval函數相比,evalassign函數的參數參數中可以帶賦值號“:=”,具體怎么運用呢?在程序設計中我們往往需要把圖標對象動態的改變其移動屬性,開始所有的對象都是可移動的,在程序的某個特定時刻,我們需要把對象變為不可移動,如何實現?假設我們所有的對象都命名為“contentx”,其中x為序號,這樣的命名將有利于我們程序的控制。我們知道,要“固定”一個對象并不難,在程序中可以這樣寫:

movable@"contentx":=false

  這樣就可“固定”序號為x的某個對象,可是如果我們要控制十個,幾十個,甚至幾百個對象呢,難道我們還用上面的方法一個一個的寫程序?用evalassign函數可以很簡單地解決這個問題,我們只要寫上一個程序段就可以實現對所有對象的“固定”,即不可移動屬性了:

evalassign("movable@/"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("movable@/"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(iconid@/"pic"^i^"/")")


  其中變量“i”為自定義變量,通過它的動態改變而實現循環的切換到框架的各個分支。在程序的開頭我們還要對變量“i”賦初值:i:=1,這樣可以確保從框架的第一個分支開始進行循環切換。最后運行的效果如下圖1.6所示,只要不斷的按“goto icon”按鈕,按鈕下面的數字圖片,即代表各個分支的圖片就會順序的循環切換。


圖1.6 范例演示效果

專題總結

  通過上面的學習,對eval和evalassign兩個系統函數的用法是不是有了更深的認識?有了這兩個“兄弟函數”,我們就可以在程序中把大批量相同性

[1] [2] 下一頁  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 污视频在线免费播放 | 成人一级视频 | 中文字幕国产欧美 | 欧日韩 | 羞羞网站| 特一级黄色毛片 | 国产美女自拍av | 日本一区二区高清不卡 | 九九热在线免费观看视频 | 国产亚洲精品久久久久久久久久 | 欧美日韩在线视频一区 | 在线观看福利网站 | 最新在线中文字幕 | 天天夜天天操 | 国产精品成人一区 | 亚洲av一级毛片特黄大片 | 国产毛片视频 | 永久av在线免费观看 | 久久久久久久久久久久久久av | 欧美国产精品久久 | www.成人精品 | 成人在线视频播放 | 天天艹综合 | 一区二区国产在线 | 久久不射电影 | 羞羞视频一区 | 国产1区2区在线观看 | 特级无码毛片免费视频尤物 | 国产精品免费在线 | 欧美雌雄另类xxxxx | 日韩av在线资源 | 高清做爰免费无遮网站挡 | 久久精精品 | 久久精品视频网站 | 国产免费资源 | 成人免费看片a | 午夜视频啊啊啊 | 最新午夜综合福利视频 | 一区二区精品在线 | 91久久99热青草国产 | 国产成人精品免费视频大全最热 |