iLeichun

当前位置: 首页 > ActionScript

AS3.0实现打字效果

分类:ActionScript   来源:网络   时间:2012-02-20 00:10:33

打字效果也是一个比较老的的效果,想来想去还是觉得用这个效果来熟悉AS3.0的字符串和文本是最好的。在AS3.0中字符串和文本与AS2.0相比变化不是太大,在AS2.0入门教程中已对字符串和文本作了祥细介绍。

创建文本框与以住有些不同,在AS3.0中创建文本格式如下:
var 文本名称:TextField = new TextField();
这样文本框就创建了,但在AS3.0中显示对象要用addChild()方法添加到显示列表中,才能在屏幕上看到它,因此就还得加上一句:
addChild(文本名称);

下面看一个例子:创建一个文本,并让文本显示一些内容。

在帧动作中输入下面的代码:
var mytext: TextField = new TextField();
mytext.text = "我已经创一个文本了";
addChild(mytext);
测试影片,你会看到一个文本:"我已经创一个文本了"显示在屏幕上了。
文本框创建之后就可以设置其属性,调用其方法了。比如:appendText()方法,它将地在号中的字符串添加到文本的的结尾处,看下面的代码:
var mytext: TextField = new TextField();
mytext.width=500;
mytext.text = "我已经创一个文本了";
mytext.appendText(",我又加了一些内容");
addChild(mytext);
测试影片,看到的内容是:"我已经创一个文本了,我又加了一些内容"。你可真能干,你还能加些内容。这里我们加了一句:mytext.width=300;这设置了文本的宽度,以适应文本内容,使它能完全显示出来。

下面进入主题,实现打字效果:

新建flash文档,记住建AS3.0文档。

然后,导入一个打字声音素材(只有一声的那种,附件已提供)到库中,在库中右击声音元件,点“连接”(flash8,cs3)或“属性”(flash cs4),在“为ActionScript导出“前打钩,在”类“文本框中输入一个类名称,我的名称是:dzs,”确定“后会弹出一个对话框,再”确定 “。
下面打开帧动作面板写代码。
首先声明一个字符串对象,将要打出的文字包含进去:
var mystr:String = "在新春佳节来临之际,祝中国教程网的朋友们,新春快乐,万事如意,牛年牛气冲天!";
然后,声明一个变量,存储字符串的字符数,备用:
var strcd:Number = mystr.length;
接下来创建文本框,设置宽度,位置和缩放:
var mytextbox:TextField = new TextField();
mytextbox.width = 300;
mytextbox.x=120;
mytextbox.y=100;
mytextbox.wordWrap = true;//文本框向下扩展
创建一个文本格式对象,设置文本的格式:
var strformat:TextFormat = new TextFormat();
strformat.bold = true;
strformat.color = 0xffff00;
strformat.size = 16;
将文本添加到显示列表:
addChild(mytextbox);
下面创建一个函数将字符串内容添加到文本上,并调用打字声音,因为我们后面会用Timer类实例来调用函数,所以在函数的事作参数,我们用 event:TimerEvent,字符串的charAt(i)方法可以提取字符串中的第i个字符。文本框在有了内容后调用 setTextFormat()方法才会有作用,所以在这里才用它。
var i =0;
function xs(event:TimerEvent):void{
    mytextbox.appendText(mystr.charAt(i));
    i++;
    mytextbox.setTextFormat(strformat);
    //新建一个dzs类,即我们导入的声音,它将继承Sound类的属性和方法。所以用play()播放它,这样每加一个字符就会出现一声打字声。
    var sy:dzs = new dzs();
    sy.play();
}
下面创建Timer类,设置每300毫秒调用一次xs函数,为文本添加一个字符,一共调用字符串的个数那么多次:
var jg:Timer = new Timer(300,strcd);
jg.addEventListener(TimerEvent.TIMER,xs);
jg.start();
 

更多