中国教程网论坛's Archiver

sanbos 发表于 2009-1-16 11:24

AS3.0实例教程三-打字效果[本文已收录教程库]

AS3.0打字效果
[swf]http://bbs.jcwcn.com/attachments/month_0901/20090116_623ff7311373835ed2da0SVnVI0i4QD8.swf[/swf]
打字效果也是一个比较老的的效果,没办法本人太笨,想来想去还是觉得用这个效果来熟悉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=300;
   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 = 20;
将文本添加到显示列表:
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();
测试影片,效果应该出来了。

[[i] 本帖最后由 xyl7422 于 2009-3-25 11:52 编辑 [/i]]

sfllj 发表于 2009-5-3 11:27

[i=s] 本帖最后由 sanbos 于 2009-5-3 13:07 编辑 [/i]

练习
[swf]http://bbs.jcwcn.com/attachments/month_0905/09050311270fb209f9dac3c76d.swf[/swf]

yqd2005 发表于 2009-7-10 14:11

请问老师如果要想实现打字速度时快时慢的效果要咋做?我是这样做地
var my_txt:String="打字效果也是一个比较老的的效果,没办法本人太笨,想来想去还是觉得用这个效果来熟悉AS3.0的字符串和文本是最好的。";
var str:Number=my_txt.length;
var txt:TextField=new TextField();
txt.width=350;
txt.x=200;
txt.y=100;
txt.wordWrap=true;
var txtFormat:TextFormat=new TextFormat();
txtFormat.bold=true;
txtFormat.color=0x00cc00;
txtFormat.size=20;
addChild(txt);
var dz:dzs=new dzs();
var speed=200;
var time:Timer=new Timer(speed,str);
var i=0;
function sy(s) {
        speed=Math.ceil(Math.random()*10000)+200;
        trace(speed);
        txt.appendText(my_txt.charAt(i));
        txt.setTextFormat(txtFormat);
        dz.play();
        i++;
}
time.addEventListener(TimerEvent.TIMER,sy);
time.start();
但speed影响不到timer的执行速度啊。。

sanbos 发表于 2009-7-10 16:11

var speed=200;
var time:Timer=new Timer(speed,str);
这两句已确定了,是时间间隔了。后面函数中speed变化已不能影响Timer了。

a646672599 发表于 2009-9-5 09:54

[i=s] 本帖最后由 zctmh0336 于 2009-9-5 22:45 编辑 [/i]

练习

zctmh0336 发表于 2009-9-5 22:45

5楼朋友的作业
[swf]http://bbs.jcwcn.com/attachments/month_0909/0909050954e9b643410bd1bd14.swf[/swf]

一笑解千愁 发表于 2009-9-19 13:00

学打字

zctmh0336 发表于 2009-9-19 15:25

7楼朋友的作业
[swf]http://bbs.jcwcn.com/attachments/month_0909/0909191300e229fb5c1260a312.swf[/swf]

从天而降 发表于 2009-9-27 19:45

RE: AS3.0实例教程三-打字效果[本文已收录教程库]

教程不错,老师讲的也很细,很好,我刚开始学习,注册个号,希望学到更多有趣的东西!

sanbos 发表于 2009-9-27 19:56

9楼的作业:
[swf]http://bbs.jcwcn.com/attachments/month_0909/090927194547e4f57edbe60646.swf[/swf]

傻影子让我换ID 发表于 2009-10-2 12:14

[i=s] 本帖最后由 傻影子让我换ID 于 2009-10-2 12:19 编辑 [/i]

交作业:
我作了一点改装,把打字做在影片剪辑中,然后在主场景用语句加载。
这样就实现了重放效果。
[swf]http://bbs.jcwcn.com/attachments/month_0910/09100212172ccf73b8613cc9f1.swf[/swf]

Jenny_lin 发表于 2009-11-5 14:49

先顶贴占个位,一会儿去练习,谢谢分享

nxasd 发表于 2009-11-5 16:05

交作业了!
[swf]http://bbs.jcwcn.com/attachments/month_0911/0911051605495f76d5bc45f1ed.swf[/swf]

Jenny_lin 发表于 2009-11-5 16:44

练习成功,哈哈,谢谢了~

啊哦~~不能上传图片

zctmh0336 发表于 2009-11-5 20:23

14楼朋友的作业
[swf]http://bbs.jcwcn.com/attachments/month_0911/0911051644b68268b8ca390981.swf[/swf]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.