首页 - 业界新闻 - 新手上网 - 网页制作 - 网络编程 - 网站运营 - 网络营销 - 动画制作 - 图形图像 - 特效代码 - 网页素材 - 视频教程 - 资源下载 - 酷站赏析 - 免费模板
不支持Flash
首页动画制作Action
搜索: 标题内容作者
阅读新闻

[推荐]2.1 文字特效(1)(第2章 ActionScript初级特效制作)

[日期:2007-03-05] 来源:中国海岸线  作者:佚名 [字体: ]

所谓文字特效就是对Flash MX中出现的各种文字通过特殊处理来创建与制作各种各样的效果这些效果一般来说都可以在动画中用到在本书的后面会有专门的部分讲解用一些文字特效软件来产生相应的特效这里主要讨论的是如何用程序来实现各种特效与控制

2.1.1  酷打字效果

Flash中经常需要输入字符但是如果有一个很酷的打字效果将给动画的交互增色不少请看下面的代码:

myObj = new Object();

//定义尺寸大小为36Times New Roman字体颜色值为0x448811

//同时字符加粗显示

myFormat= new TextFormat("Times New Roman",36,0x448811,true);

myObj.onKeyDown = function() {

    i++;

    _root.createEmptyMovieClip("L"+i,i);

    //创建一个字体效果其位置是在(10,10)其宽度与高度都是50

    _root["L"+i].createTextField("myText",1,10,10,50,50);

   //返回键盘输入的字符

    _root["L"+i].myText.text = chr(Key.getAscii());

    _root["L"+i].myText.setTextFormat(myFormat);

    //设置初始产生时的字体大小为正常大小的5

    _root["L"+i]._xscale = 500;

    _root["L"+i]._yscale = 500;

    //目标字体的位置一行有30个字符每个字符间隔是15个点

    _root["L"+i].xTarget = (i%30 == 0) ? t=0 : 15*t++;

    _root["L"+i].yTarget = (i%30 == 0) ? ++j*15 : j*15;

    _root["L"+i].onEnterFrame = function() {

             //控制字体的位置,从当前位置向后与向下偏60个点70%的速度递减

             this._x += (this.xTarget+60-this._x)*.3;

             this._y += (this.yTarget+60-this._y)*.3;

             //控制字体的大小70%的速度递减直到40%的大小为止

             this._xscale += (40-this._xscale)*.3;

             this._yscale += (40-this._yscale)*.3;

    }

   //如果字符超过100个就将字符移到-100位置点其实就是相当于字体移出屏幕

    _root["L"+(i-100)].yTarget = -100;

    //如果字符超过130个就将以前的字符删除

    _root["L"+(i-130)].removeMovieClip();

}

Ö           Key.addListener(myObj);

这段代码看似非常简单但是内容很丰富其中最精华的部分就是利用了数学的等比数列也就是说每次字符移动的距离是上次距离的70%当最终字符到达指定位置(xTarget,yTarget)时字符的移动就停止了当然了是看上去停止了而程序实际上没有停止这种字体特效会随着字符的增加而加重计算的系统资源消耗所以程序还设置了当字符数增加到130个时就开始自动清除以前的字符这样才可以保证程序快速地运行这个特效虽然是个响应键盘输入的字符特效但是可以轻松将它的思路修改成为另一种字符串特效比如说先把字符串存在一个变量里然后再定时将它们一个个地取出来通过上面的代码来驱动它上面程序运行的结果如图2-1所示

2-1


2.1.2  显示字体列表

在动画制作与交互过程中经常要遇到大批文字显示的问题一般解决方式有两种:一种就是用Flash MX的组件功能(Component把这段文字与对应的滚动条关联起来然后用滚动条进行控制(有关这种方式会在后面的战斗游戏中讲解)这里要讲的是另一种控制方法即根据鼠标的位置来控制文本的自动滚动

先让我们看一段程序:

userFonts = TextField.getFontList();

userFonts.sort();

_root.createEmptyMovieClip("fontList",i);

for(i=0; i<userFonts.length; i++) {

    //创建一个新的动画片断包括相应的字体内容

    _root.fontList.createTextField("userText"+i,i,30,i*25,300,25);

    _root.fontList["userText"+i].text = userFonts[i];

    _root.fontList["userText"+i].border = true;

    //修改背景色

_root.fontList["userText"+i].background = true;

    _root.fontList["userText"+i].backgroundColor = 0xffff00;

//设置字体格式

    displayStyle = new TextFormat(userFonts[i],18,0x000000);

    _root.fontList["userText"+i].setTextFormat(displayStyle);

}

_root.onEnterFrame = function() {

    (_root._ymouse<200) ? _root.fontList._y-=(_root._ymouse-200)*.1 : _root.fontList._y+=(200-_root._ymouse)*.1;

}

在上面这段程序中先是返回一个字体的列表然后对这个列表进行排序之后把这个列表中的全部字符串放到一个动画片断中最后通过鼠标来控制这个包括了很多种字体的文字动画片断

程序中用鼠标控制文本的是最后一个语句:_root._ymouse<200…它通过感应鼠标离中心点200的距离再用这个距离的0.1倍大小来作为每次文本移动的距离从而实现鼠标控制文本

程序运行结果如图2-2与图2-3所示

      

2-2                                   2-3

1.文本框对象(TextField

上面这段代码用到了文本框对象(TextField)与文本格式对象(TextFormat下面分别进行一下介绍

文本框对象(TextField)是Flash MX中新加入的对象Flash 影片中的所有动态文本字段(Dynamic Text)及输入文本字段(Input Text)都是 TextField 对象的实例用户可以在属性检查器中为文本字段指定实例名称并且可以使用 TextField 对象的方法和属性与脚本一起对文本字段进行操作TextField 对象从 Object 对象继承而来若要动态地创建文本字段可使用 MovieClip.createTextField 方法其函数原型如下:

myMovieClip.createTextField (instanceName, depth, x, y, width, height)

instanceName表示这个文本框的实例名

depth表示文本框的深度与动画片断的深度有相同的含义

x,y表示文本框在动画片断中的位置

widthheight表示文本框的宽度与高度这两个值与后面的_width_height属性相对应在程序中也可以通过对这两个属性进行修改从而达到修改某个文本框的宽度与高度的目的

在实例化文本框对象之后就可以对文本框的相应属性进行设置与读取了下面列出一些文本框常用的属性并做简短的说明:

TextField.autoSize

控制文本的对齐方式及对应的尺寸如果为“true则表示文本框与内容相匹配不会有多余的空白处如果等于“left则是靠左对齐同时扩展或者缩短文本框的右边及底边以便可以放下全部内容左边与顶部将保留相同的空位如等于“right则是靠右对齐同时扩展或者缩短文本框的左边及底边以使文本框全部靠右并能放下全部的文本内容右边及顶部保留相同空位如果等于“center则是居中对齐同时让文本保留在水平中心的位置

TextField.background

控制文本的背景色是否显示布尔变量true时显示false不显示默认值是false要设置背景色这个值一定先设定为true

TextField.backgroundColor

控制文本的背景色默认值是白色0xFFFFFF即使当前没有背景也可获取或设置此属性Flash的旧版本中文本的背景色是不能调整的如果实在需要背景色大都是先设定文本无背景色然后再放置一个有颜色的矩形在文本的下面以达到模拟背景色的效果

TextField.border

文本边框布尔变量true时表示有边框false时表示无边框边框的颜色通过borderColor来控制

TextField.borderColor

文本边框颜色为颜色值变量书写方式一般是0x######它与border一起控制边框的属性即使当前没有边框也可获取或设置此属性这项内容在旧版Flash中也是无法控制的

TextField._heightTextField._width

文本框的高度与宽度修改这两个值仅仅会影响文本框的范围不会影响文本的字体大小与边线的粗细

TextField.html

控制文本是否为html文本布尔变量如果它的值是true就把文本按html方式显示如果为false即使文本内容是html格式也按纯文本方式显示出来

TextField.htmlText

html文本串在文本对象中html文本串的内容与普通纯文本的内容存放的地方是不相同的它们各自管理自已的内容互不干扰当既有text又有html内容时显示的是htmlText的内容如果在后面又使用文本格式对象设置了文本格式那么文本格式就以文本格式对象为准

TextField.length

返回文本的长度它的值只能获取不能设置当文本的长度发生改变时它的值也同时改变注意在求长度的过程中像Tab键(“\t”)换行符(“newline”)等相应的控制符都只占一个字符

TextField.restrict

指示用户可输入到文本字段中的字符集如果 restrict 属性的值为 null则可输入任何字符如果 restrict 属性的值为空字符串则不能输入任何字符如果 restrict 属性的值为一个字符串则只能向文本字段中输入该字符串中的字符如果需要支持连续字符串的输入其范围可以使用短划线 (-) 进行指定可以使用 \u 转义序列构造 restrict 字符串

如果此字符串以 ^ 开头则先接受所有字符然后从接受字符集中排除字符串中 ^ 之后的字符如果此字符串不以 ^ 开头则最初不接受任何字符然后将字符串中的字符包括在接受字符集中

TextField.text

当前文本的字符串内容它与前面讲的htmlText相对应只是它的内容仅显示纯文本内容

TextField.textColor

当前文本的颜色属于颜色值其书写方式为0x######

TextField.textHeightTextField.textWidth

 文本内容的高度与宽度它取得的是文本字符的真实高度与宽度

TextField.type

文本的类型它的取值有两种默认是第一种当等于“dynamic”时表示是动态文本它的内容的修改需通过程序来完成

当等于“input”时表示是一个输入框文本内容的修改可以由用户直接用键盘输入

TextField.variable

文本变量名这个值可以取得也可以设置文本对象与以前Flash版本中的文本框有所不同要控制文本对象必须用实例名而文本变量名则是以前版本的控制方法两者一定要分清楚如图2-4所示

2-4



录入:mianbao

评论 】 【 推荐 】 【 打印
上一篇:第1章 小结( 第1章 ActionScript编程 )
下一篇:有关Flash ActionScript 3编程的总结
 
相关新闻      
本文评论       全部评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
 



#







不支持Flash
经典推荐
用Flash AS绘图给影片