基于Flash ActionScript 的汉字书写软件的设计与实现
2015-12-10刘悦
刘悦
摘要:在计算机普及的今天,越来越多的年轻人习惯使用计算机键盘来书写文字,“提笔忘字”的现象越来越多,中国汉字的发展逐渐向“沙漠化”、粗糙化的趋势发展。央视举办的《中国汉字听写大会》经播出后获得了广泛的好评,在全国各地掀起了关于中国汉字的学习热潮,笔者结合工作实际采用Flash软件及ActionScript语言设计了一款汉字书写软件。
关键词:Flash;ActionScript;汉字书写
中图分类号:TP311 文献标识码: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 概述
在计算机普及的今天,越来越多的年轻人习惯使用计算机键盘来书写文字,“提笔忘字”的现象越来越多,中国汉字的发展逐渐向“沙漠化”、粗糙化的趋势发展。央视举办的《中国汉字听写大会》经播出后获得了广泛的好评,在全国各地掀起了关于中国汉字的学习热潮。
举办此类比赛首先要解决比赛软件的问题。很多学校大都使用iPad作为比赛工具,通过投影仪把书写内容显示到大屏幕上,这样做比较简单方便,但是也存在一些问题,如没有计时功能,时间上还需要人工控制;修改功能单一,修改时间较长,影响答题者的书写速度;界面比较单板,缺乏美观性等。针对上述情况,笔者结合工作实际采用Flash软件及ActionScript语言设计了一款汉字书写软件。
Flash动画制作软件具有交互性强、图像质量高、兼容性好、容量小等优点,被业界普遍接受。ActionScript(简称AS)语言采用面向对象的程序设计思想,是以场景中的按钮、关键帧及影片剪辑等组件作为对象,使用AS语言进行编写和定义。在Flash中运用AS脚本语言,不但能根据用户的要求动态地控制动画的各种行为,还可以让其作出反应从而实现动画的交互功能。
2 汉字书写软件介绍
2.1 功能描述
使用者可以在“田字格”内进行随意书写,也可以根据需要进行涂改、撤销或恢复操作,还可全部清除格内的所有内容,书写完毕可以点击进行提交,软件设有倒计时功能,超过一定时间,停止书写功能,自动提交答案。软件功能结构如图1所示。
图1 软件功能示意图
2.2 界面设计
图2 软件界面
在软件的界面设计方面本着美观大方、简单易用的原则,基本参照了央视汉字听写大会软件界面的布局,并加以适当改动。软件界面如图2所示。
3 实现方法
3.1 界面制作
软件背景采用Photoshop合成制作,为了使书写界面更加清晰美观,田字格部分采用不易失真的矢量图软件Illustrator制作。制作过程如图3、图4所示。
图3 底图制作
图4 田字格制作
3.2 场景及库元件说明
所采用的Flash制作软件版本为CS5.5,在设计实现阶段,根据功能划分将各元素分布在不同图层中,该软件整个场景共分为三个图层,每层一帧,包括按钮层、进度条层、背景层,如图5所示。按钮层包括部分功能按钮如:提交按钮、提交后的确定、取消按钮,其他按钮如书写、修改等按钮,在场景所在的Main.as类文件中调用。进度条层主要放置比赛倒计时元件。
部分库元件功能如下:
影片剪辑ToolPanel中内置了书写、橡皮、撤销、清除工具按钮。软件初始默认工具为书写,此时可以在田字格内进行书写;点击“橡皮”按钮可对所写内容进行修改;点击“撤销”按钮可以取消前面若干步书写操作,单击一次取消一笔;点击“清除”按钮可以清除田字格内所有内容。
影片剪辑sure_cancel放置了提交按钮,以及提交后的确定和取消按钮。点击提交按钮,显示确定和取消按钮,单击“确定”提交答案,单击“取消”继续答题,同时确定和取消按钮隐藏。
影片剪辑countdown里设计了一个倒计时条,用于显示剩余答题时间。倒计时条随着时间进行逐渐向左缩短,在剩余10秒时会有倒计时声音提示,时间到时会有结束钟声响起,同时在计时条上方显示“时间到”,提示答题结束。
图5 软件flash制作场景
3.3 脚本设计及实现
该软件的编程部分采用ActionScript3.0编写,分别定义了几个包,如图6所示。Main为主类, ToolPanel类和Canvas类内置于主类,ToolPanel用来设置并显示工具箱,Canvas用来实现书写。Canvas具有graphID属性,用来确定当前绘制的是什么图形,比如说id为0时,画线条,id为1时,为橡皮工具,这些id都被定义成了ToolPanel的静态属性,方便访问;graph包里放了各种可以绘制的图形。
图6 软件文件组成
因篇幅所限,只列举部分代码,具体如下:
1)书写感应区
相当于一个绘图板,其设置放在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);
//设置遮罩,将画在画布外的东西隐藏起来
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)提交按钮的实现
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)书写笔画的设计
笔画线宽的代码编写在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 测试发布
考虑到没有安装Flash Player插件的电脑不能执行.swf文件,利用Flash的导出功能生成一个可执行的.exe文件,能运行于所有的Window平台,无需安装,直接运行。该软件可配合投影仪、手写板等硬件设备,利用现有资源,以最少投入搭建经济实用比赛系统。
5 结束语
在美国有从1925年延续至今的英语全国拼字比赛《National Spelling Bee》,成为全民关注的带有国家精神、民族性质的活动。我们汉字几千年的文化积淀极其深厚的文化底蕴,使中华民族成为世界上最具智慧的民族,它是我们传统文化的一种独特象征。作为中国人,我们更应该把汉字的美传承下去,通过书写把文明传递,实现民族的未雨绸缪。
参考文献:
[1] 朱治国,缪亮,陈艳丽.Flash ActionScript 3.0 编程技术教程[M].北京:清华大学出版社,2008:120-130.
[2] 胡孔法.精通Flash MX 2004动画与Actionscript编程[M].北京:清华大学出版社,2004:80-89.
[3] 陈纪霞.基于Flash 的绘图板的设计与实现[J].重庆科技学院学报,2013(6):137-139.