劉悅
摘要:在計(jì)算機(jī)普及的今天,越來越多的年輕人習(xí)慣使用計(jì)算機(jī)鍵盤來書寫文字,“提筆忘字”的現(xiàn)象越來越多,中國漢字的發(fā)展逐漸向“沙漠化”、粗糙化的趨勢發(fā)展。央視舉辦的《中國漢字聽寫大會》經(jīng)播出后獲得了廣泛的好評,在全國各地掀起了關(guān)于中國漢字的學(xué)習(xí)熱潮,筆者結(jié)合工作實(shí)際采用Flash軟件及ActionScript語言設(shè)計(jì)了一款漢字書寫軟件。
關(guān)鍵詞:Flash;ActionScript;漢字書寫
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)26-0080-03
Design and Realization of Chinese character writing software Based on Flash ActionScript
LIU Yue
(Tianjin Technical School of Printing and Decorating, Tianjin 300111, China)
Abstract: Today with widespread using of computers, more and more young people accustomed to using the keyboard to write Chinese characters, "pick up a pen forget the word" phenomenon more and more happens, there is a growing development of Chinese characters "desertification", roughening trend. CCTV's "Chinese Character Spelling Congress" once broadcast received wide acclaim in the country set off a culture of learning Chinese characters on the boom, the author combines practical work using Flash software and ActionScript language has designed a Chinese character writing software.
Key words: Flash; ActionScript; Chinese character writing
1 概述
在計(jì)算機(jī)普及的今天,越來越多的年輕人習(xí)慣使用計(jì)算機(jī)鍵盤來書寫文字,“提筆忘字”的現(xiàn)象越來越多,中國漢字的發(fā)展逐漸向“沙漠化”、粗糙化的趨勢發(fā)展。央視舉辦的《中國漢字聽寫大會》經(jīng)播出后獲得了廣泛的好評,在全國各地掀起了關(guān)于中國漢字的學(xué)習(xí)熱潮。
舉辦此類比賽首先要解決比賽軟件的問題。很多學(xué)校大都使用iPad作為比賽工具,通過投影儀把書寫內(nèi)容顯示到大屏幕上,這樣做比較簡單方便,但是也存在一些問題,如沒有計(jì)時功能,時間上還需要人工控制;修改功能單一,修改時間較長,影響答題者的書寫速度;界面比較單板,缺乏美觀性等。針對上述情況,筆者結(jié)合工作實(shí)際采用Flash軟件及ActionScript語言設(shè)計(jì)了一款漢字書寫軟件。
Flash動畫制作軟件具有交互性強(qiáng)、圖像質(zhì)量高、兼容性好、容量小等優(yōu)點(diǎn),被業(yè)界普遍接受。ActionScript(簡稱AS)語言采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,是以場景中的按鈕、關(guān)鍵幀及影片剪輯等組件作為對象,使用AS語言進(jìn)行編寫和定義。在Flash中運(yùn)用AS腳本語言,不但能根據(jù)用戶的要求動態(tài)地控制動畫的各種行為,還可以讓其作出反應(yīng)從而實(shí)現(xiàn)動畫的交互功能。
2 漢字書寫軟件介紹
2.1 功能描述
使用者可以在“田字格”內(nèi)進(jìn)行隨意書寫,也可以根據(jù)需要進(jìn)行涂改、撤銷或恢復(fù)操作,還可全部清除格內(nèi)的所有內(nèi)容,書寫完畢可以點(diǎn)擊進(jìn)行提交,軟件設(shè)有倒計(jì)時功能,超過一定時間,停止書寫功能,自動提交答案。軟件功能結(jié)構(gòu)如圖1所示。
圖1 軟件功能示意圖
2.2 界面設(shè)計(jì)
圖2 軟件界面
在軟件的界面設(shè)計(jì)方面本著美觀大方、簡單易用的原則,基本參照了央視漢字聽寫大會軟件界面的布局,并加以適當(dāng)改動。軟件界面如圖2所示。
3 實(shí)現(xiàn)方法
3.1 界面制作
軟件背景采用Photoshop合成制作,為了使書寫界面更加清晰美觀,田字格部分采用不易失真的矢量圖軟件Illustrator制作。制作過程如圖3、圖4所示。
圖3 底圖制作
圖4 田字格制作
3.2 場景及庫元件說明
所采用的Flash制作軟件版本為CS5.5,在設(shè)計(jì)實(shí)現(xiàn)階段,根據(jù)功能劃分將各元素分布在不同圖層中,該軟件整個場景共分為三個圖層,每層一幀,包括按鈕層、進(jìn)度條層、背景層,如圖5所示。按鈕層包括部分功能按鈕如:提交按鈕、提交后的確定、取消按鈕,其他按鈕如書寫、修改等按鈕,在場景所在的Main.as類文件中調(diào)用。進(jìn)度條層主要放置比賽倒計(jì)時元件。
部分庫元件功能如下:
影片剪輯ToolPanel中內(nèi)置了書寫、橡皮、撤銷、清除工具按鈕。軟件初始默認(rèn)工具為書寫,此時可以在田字格內(nèi)進(jìn)行書寫;點(diǎn)擊“橡皮”按鈕可對所寫內(nèi)容進(jìn)行修改;點(diǎn)擊“撤銷”按鈕可以取消前面若干步書寫操作,單擊一次取消一筆;點(diǎn)擊“清除”按鈕可以清除田字格內(nèi)所有內(nèi)容。
影片剪輯sure_cancel放置了提交按鈕,以及提交后的確定和取消按鈕。點(diǎn)擊提交按鈕,顯示確定和取消按鈕,單擊“確定”提交答案,單擊“取消”繼續(xù)答題,同時確定和取消按鈕隱藏。
影片剪輯countdown里設(shè)計(jì)了一個倒計(jì)時條,用于顯示剩余答題時間。倒計(jì)時條隨著時間進(jìn)行逐漸向左縮短,在剩余10秒時會有倒計(jì)時聲音提示,時間到時會有結(jié)束鐘聲響起,同時在計(jì)時條上方顯示“時間到”,提示答題結(jié)束。
圖5 軟件flash制作場景
3.3 腳本設(shè)計(jì)及實(shí)現(xiàn)
該軟件的編程部分采用ActionScript3.0編寫,分別定義了幾個包,如圖6所示。Main為主類, ToolPanel類和Canvas類內(nèi)置于主類,ToolPanel用來設(shè)置并顯示工具箱,Canvas用來實(shí)現(xiàn)書寫。Canvas具有g(shù)raphID屬性,用來確定當(dāng)前繪制的是什么圖形,比如說id為0時,畫線條,id為1時,為橡皮工具,這些id都被定義成了ToolPanel的靜態(tài)屬性,方便訪問;graph包里放了各種可以繪制的圖形。
圖6 軟件文件組成
因篇幅所限,只列舉部分代碼,具體如下:
1)書寫感應(yīng)區(qū)
相當(dāng)于一個繪圖板,其設(shè)置放在Canvas.as文件中,部分代碼如下:
public function Canvas(w:Number, h:Number, stage:Stage)
{
this.w = w;
this.h = h;
//繪制背景
this.graphics.lineStyle(0, 0xffffff);
this.graphics.drawRoundRect(0, 0, w, h, 8, 8);
this.addEventListener(MouseEvent.MOUSE_DOWN, startDraw);
stage.addEventListener(MouseEvent.MOUSE_UP, stopDraw);
allCanvas = new Sprite();
addChild(allCanvas);
//初始化backCanvas
backCanvas = new Sprite();
backCanvasBitmapData = new BitmapData(w, h, true, 0);
backCanvasBitmap = new Bitmap(backCanvasBitmapData);
backCanvas.addChild(backCanvasBitmap);
allCanvas.addChild(backCanvas);
//設(shè)置遮罩,將畫在畫布外的東西隱藏起來
var maskSprite:Shape = new Shape();
maskSprite.graphics.beginFill(0);
maskSprite.graphics.drawRoundRect(1, 1, w-4, h-4, 8, 8);
maskSprite.graphics.endFill();
allCanvas.addChild(maskSprite);
canvas = new Sprite();
allCanvas.addChild(canvas);
canvas.mask = maskSprite; }
2)提交按鈕的實(shí)現(xiàn)
sureBtn.visible = false;
cancelBtn.visible = false;
submitBtn.addEventListener(MouseEvent.CLICK,fl_MouseClickHandler_2);
function fl_MouseClickHandler_2(event:MouseEvent):void
{
sureBtn.visible = true;
cancelBtn.visible = true;
}
cancelBtn.addEventListener(MouseEvent.CLICK, fl_ClickToHide);
function fl_ClickToHide(event:MouseEvent):void
{
sureBtn.visible = false;
cancelBtn.visible = false;
}
3)書寫筆畫的設(shè)計(jì)
筆畫線寬的代碼編寫在graph文件夾中的Line.as文件中,具體如下:
public class Line extends GraphBase
{ public function Line(c:uint = 0)
{ super(c); }
override public function begin(xx:Number, yy:Number):void
{ this.graphics.lineStyle(10, color);
this.graphics.moveTo(xx, yy); }
override public function draw(xx:Number, yy:Number):void
{ this.graphics.lineTo(xx, yy); }
}
4 測試發(fā)布
考慮到?jīng)]有安裝Flash Player插件的電腦不能執(zhí)行.swf文件,利用Flash的導(dǎo)出功能生成一個可執(zhí)行的.exe文件,能運(yùn)行于所有的Window平臺,無需安裝,直接運(yùn)行。該軟件可配合投影儀、手寫板等硬件設(shè)備,利用現(xiàn)有資源,以最少投入搭建經(jīng)濟(jì)實(shí)用比賽系統(tǒng)。
5 結(jié)束語
在美國有從1925年延續(xù)至今的英語全國拼字比賽《National Spelling Bee》,成為全民關(guān)注的帶有國家精神、民族性質(zhì)的活動。我們漢字幾千年的文化積淀極其深厚的文化底蘊(yùn),使中華民族成為世界上最具智慧的民族,它是我們傳統(tǒng)文化的一種獨(dú)特象征。作為中國人,我們更應(yīng)該把漢字的美傳承下去,通過書寫把文明傳遞,實(shí)現(xiàn)民族的未雨綢繆。
參考文獻(xiàn):
[1] 朱治國,繆亮,陳艷麗.Flash ActionScript 3.0 編程技術(shù)教程[M].北京:清華大學(xué)出版社,2008:120-130.
[2] 胡孔法.精通Flash MX 2004動畫與Actionscript編程[M].北京:清華大學(xué)出版社,2004:80-89.
[3] 陳紀(jì)霞.基于Flash 的繪圖板的設(shè)計(jì)與實(shí)現(xiàn)[J].重慶科技學(xué)院學(xué)報(bào),2013(6):137-139.