摘要:該文針對在研究基于ActionScript雙語模擬演示教學(xué)課件中遇見的動(dòng)態(tài)演示延遲問題,提出了一種雙層循環(huán)嵌套的幀延遲法,該方法彌補(bǔ)了已有的延遲函數(shù)setInterval()無法解決循環(huán)內(nèi)部的延遲問題,具有很好的實(shí)用性。
關(guān)鍵詞:ActionScript;課件;幀延遲
中圖分類號:G434文獻(xiàn)標(biāo)識碼 A 文章編號:1009-3044(2010)01-201-02
Bilingual Dynamic Simulation Demonstration Teaching Courseware Research and Realization Based on Actionscript
YANG Tian-xia,WANG Zhi-he,WANG Lin-yun,WANG Hua
(North West Normal University,College of mathematicx and information science, Lanzhou 730070, China)
Abstract: In this paper, the research is based on ActionScript in the bilingual simulation demonstration courseware ,which is in order to solve the problem of the dynamic presentation delays. A double-nested loop frame delay method was presented, which made up the latency issues that the function setInterval can not solve the inside loop of the latency issues. It has good practicability.
Key words: ActionScript; courseware; frame delay
當(dāng)前使用的利用Flash技術(shù)制作的課件,大多是靜態(tài)的只能觀看動(dòng)畫演示而不能動(dòng)態(tài)交互或是不能動(dòng)態(tài)地由使用者來控制動(dòng)畫演示的進(jìn)程的課件,而且常常被作為Powerpoint等軟件調(diào)用的輔助角色出現(xiàn),容易給使用者造成Flash就是模擬物理實(shí)驗(yàn)、化學(xué)實(shí)驗(yàn)等簡單過程的印象。
事實(shí)上,自Flash中集成了ActionScript技術(shù)以來,F(xiàn)lash在設(shè)計(jì)和制作動(dòng)態(tài)演示方面的功能越來越強(qiáng)大。傳統(tǒng)的用Flash開發(fā)的課件大多是逐幀動(dòng)畫,動(dòng)畫演示的每一步都必須使用手動(dòng)來畫,而現(xiàn)在利用ActionScript技術(shù)可以實(shí)現(xiàn)用程序來控制動(dòng)畫演示,同時(shí)還可做到場景演示和程序代碼分離,動(dòng)畫演示的制作更加快捷,功能也更加強(qiáng)大。
1 基本概念
定義1ActionScript是自Flash3開始才有的內(nèi)置腳本語言,起初功能非常簡單,只局限于控制動(dòng)畫的播放。隨著版本的不斷更新,到Flash4和Flash5以及flashMX,這種內(nèi)置腳本語言統(tǒng)稱為ActionScript1.0,其功能也在不斷的發(fā)展和完善中,到Flash2004, ActionScript已經(jīng)成為一門專業(yè)級的編程語言,版本升級為ActionScript2.0,發(fā)展到現(xiàn)在最新標(biāo)準(zhǔn)為ActionScript3.0已經(jīng)完全支持面向?qū)ο缶幊獭?/p>
2 功能實(shí)現(xiàn)
2.1 ActionScript功能
ActionScript功能非常完善,如下所示:
1)控制動(dòng)畫播放順序;
2)控制Flash動(dòng)畫內(nèi)部的一些元素(聲音,影片剪輯,視頻等);
3)創(chuàng)建復(fù)雜的動(dòng)畫,并能響應(yīng)用戶的輸入,與外部程序通訊(瀏覽器和操作系統(tǒng)等);
4)ActionScript已經(jīng)是專業(yè)的編程語言,理論上可以開發(fā)任何功能的WEB應(yīng)用程序。
2.2 課件功能實(shí)現(xiàn)概要
該文以《數(shù)據(jù)結(jié)構(gòu)》雙語動(dòng)態(tài)模擬演示教學(xué)課件中的信息檢索(散列表的雙散列探查)為例來詳細(xì)闡述ActionScript技術(shù)的特點(diǎn)和優(yōu)勢。
課件是以左中右分三部分來布局的,左邊詳細(xì)說明開地址法的基本思想,右邊重點(diǎn)闡述了具體的雙散列探查法的技術(shù)思想和要點(diǎn),而本文將對中間部分進(jìn)行重點(diǎn)論述,也就是課件的動(dòng)態(tài)演示部分。
如圖1所示,整個(gè)動(dòng)畫的演示是由“play”和“reset”這兩個(gè)按鈕來控制的,而play按鈕又細(xì)化為兩個(gè)更具體的小按鈕“單步”和“執(zhí)行”, “單步”是指一步一步間斷執(zhí)行,但“執(zhí)行”是連續(xù)的。控制整個(gè)動(dòng)畫演示的ActionScript代碼被封裝在一個(gè)名為“as”的影片剪輯里。
課件的動(dòng)態(tài)演示部分又分為四個(gè)連動(dòng)的子部分:
動(dòng)態(tài)①是整個(gè)雙散列探查的初始鍵集合,這些鍵值在場景中是做成影片剪輯出現(xiàn)的,目的是在演示過程中能夠動(dòng)態(tài)變化(顏色由藍(lán)翻轉(zhuǎn)漸變到灰);
動(dòng)態(tài)②是合成的雙散列函數(shù)計(jì)算,以動(dòng)態(tài)①里的鍵值作為函數(shù)的輸入,同時(shí)函數(shù)中的下標(biāo)、對應(yīng)動(dòng)態(tài)部分①的鍵值部分以及最后的輸出結(jié)果索引(Index)都是動(dòng)態(tài)變化的;
動(dòng)態(tài)③模擬數(shù)組存儲空間,以動(dòng)態(tài)②的函數(shù)計(jì)算結(jié)果為依據(jù)將鍵值放入相應(yīng)的位置,如有沖突則轉(zhuǎn)入動(dòng)態(tài)④;
動(dòng)態(tài)④沖突解決,當(dāng)動(dòng)態(tài)③出現(xiàn)沖突,則轉(zhuǎn)入動(dòng)態(tài)②,下標(biāo)增1再次計(jì)算產(chǎn)生新的索引,即二次探查。
本文在課件開發(fā)過程中遇到的一個(gè)關(guān)鍵問題就是動(dòng)作延遲問題,因?yàn)锳ctionScript代碼的執(zhí)行速度非常快,如不加延遲,僅憑我們?nèi)庋凼歉究床灰娺@些過程動(dòng)作而僅能看見最終結(jié)果。而已有的延遲函數(shù)setInterval()又無法解決雙層循環(huán)代碼內(nèi)部的延遲,因此本文提出一種雙層循環(huán)嵌套的幀延遲法。
2.3 雙層循環(huán)嵌套的幀延遲法
針對ActionScript語句執(zhí)行速度極快,而本課件又要求上文所述的四個(gè)部分有連動(dòng)的延遲需求的問題,本文提出一種使用幀延遲的方法來達(dá)到更加清晰的表現(xiàn)效果,達(dá)到更佳的互動(dòng)學(xué)習(xí)效果。
第一步 在as(如上文所述,它是本課件包含控制代碼的一個(gè)影片剪輯)里的第一幀寫入程序控制初始化代碼,以下是部分代碼:
var i,j,h,h1,hr:Number;
var myArray=new Array(13,41,15,44,6,68,12,25,38,64,19,49);
var is_emp=new Array();
//初始化開關(guān)數(shù)組
for(i=0;i<13;i++)
is_emp[i]=true;
i=0;
第二步 從總體上來看,逐個(gè)處理動(dòng)態(tài)①中的鍵值,找到每一個(gè)鍵值的索引是本課件的本質(zhì),因此as中的外循環(huán)就確定了,循環(huán)執(zhí)行12次(如圖2所示),從第3幀到第77幀來回循環(huán)。其中第3幀里添加控制主場景中兩個(gè)按鈕(單步和執(zhí)行)的控制代碼,意在供學(xué)習(xí)者選擇可以單個(gè)間斷來執(zhí)行以便看的更清楚,也可以連續(xù)執(zhí)行。
第三步 如果在探查過程中遇到?jīng)_突則執(zhí)行42幀到63幀這部分代碼,其它的則跳過這部分幀(如圖2所示)。課件中的一些效果演示,比如顏色變換、箭頭后移和圖形翻轉(zhuǎn)等同時(shí)也穿插在了雙層循環(huán)里。
第四步 最終結(jié)果顯示。
通過影片剪輯中的ActionScript代碼來控制主場景中的控件也是本課件的一大特色,這樣做可以讓控制流程更加緊湊,避免了代碼的雜亂,同時(shí)增加了可讀性和易更新性等特性。
3 結(jié)束語
通過對本課件的研究,在實(shí)現(xiàn)過程中為解決雙層循環(huán)中代碼執(zhí)行的延遲問題,提出了一種基于ActionScript的雙層循環(huán)嵌套的幀延遲法,該方法不僅有效解決了代碼延遲問題,而且可用性強(qiáng),還可以在其中穿插各種演示效果代碼。但是唯一不足的是代碼組織起來還是有些凌亂,本文下一步將會(huì)在這一方面做深入研究。
參考文獻(xiàn):
[1] 郭德偉,肖天慶.基于Flash ActionScript 的機(jī)械類教學(xué)模擬課件研制[J].現(xiàn)代教育技術(shù),2009,8(19):93-97.
[2] 王劍.ActionScript在Flash 中制作交互動(dòng)畫的高級應(yīng)用[J].科技創(chuàng)新導(dǎo)報(bào),2008,25:26.
[3] 羅文,孫宙紅.基于Flash的豐富互聯(lián)網(wǎng)應(yīng)用程序在網(wǎng)絡(luò)教學(xué)中的應(yīng)用[J].中國電化教育,2007,(4):107-111.
[4] 高報(bào)國.基于Flash建立的虛擬液壓回路系統(tǒng)的研制[J].實(shí)驗(yàn)技術(shù)與管理,2008,25(8):83-88.
[5] 于建松,趙玉萍.Flash ActionScript在課件制作中的應(yīng)用[J].淮陰工學(xué)院學(xué)報(bào),2005,14(1):51-53.
[6] 胡孔法.精通FlashMX2004動(dòng)畫與ActionScript編程[M].北京:清華大學(xué)出版社,2004.