WEB开发网
开发学院图形图像Flash [AS 功能代码教程09] 点阵字效果 阅读

[AS 功能代码教程09] 点阵字效果

 2009-05-30 12:07:08 来源:WEB开发网   
核心提示:第一次在fanflash上看到这个实例,感觉很不可思议仔细研究一下发现,作者的构思还是很巧妙的,今天拿来与大家分享一下这个实例可以说结合了BitmapData类的技术与Tween类的动感,思路:1.用AS创建一个空文本框,[AS 功能代码教程09] 点阵字效果,存储欲显示的字;2.把这个文本框看成一个位图,并存储其位图

第一次在fanflash上看到这个实例,感觉很不可思议

仔细研究一下发现,作者的构思还是很巧妙的,今天拿来与大家分享一下

这个实例可以说结合了BitmapData类的技术与Tween类的动感。

思路:

1.用AS创建一个空文本框,存储欲显示的字;

2.把这个文本框看成一个位图,并存储其位图数据;

3.逐行扫描这个位图数据,把有文字信息的像素点都存储到数组中;

4.最后根据数组复制出"点",并使每个"点"移动到相应的位置。

步骤1:

绘制10*10的圆点,保存为影片剪辑,连接—>导出—>标志符"dot"

步骤2:

加入AS代码:

import flash.display.BitmapData;
import mx.transitions.Tween;
import mx.transitions.easing.*;
//导入BitmapData及Tween类
_root.createTextField("txt", -1, -100, -100, 0, 0);
txt.autoSize = true;
txt.text = "输入要显示的文字";
//创建一个空的文本框,存储输入的文本
var bm:BitmapData = new BitmapData(txt._width,txt._height, false, 0xffffff);
bm.draw(txt);
//把txt看成位图,并把txt位图信息存入mb
var DotArray:Array = new Array();
//申请一个数组用于存储mb位图信息
var w:Number = 4;
var h:Number = 4;
//w,h分别为点间宽度和高度
for (y=0; y < txt._height; y++) {

for (x=0; x < txt._width; x++) {

  if (bm.getPixel(x, y) != 0xffffff) {
   DotArray.push({x:x*w, y:y*h});
   //逐行逐列取像素,把有字的像素位置存入数组并乘上w,h以扩展距离
  }
 }
}
_root.createEmptyMovieClip("MC", -1);
MC._x = 10;
MC._y = 150;
//============根据数组复制"点"===============
for (var i = 0; i < DotArray.length; i++) {

 var p = MC.attachMovie("dot", "dot"+i, i);

 p.cacheAsBitmap = true;

 //将"点"进行位图缓存
 p._x = Math.random()*Stage.width;
 p._y = Math.random()*Stage.height;
 //给每个"点"一个随机的起点
 p.tox = DotArray[i].x;
 p.toy = DotArray[i].y;
 //tox,toy是每个点要移动到的终点

 var speed = Math.random()*4;

 new Tween(p, "_x", Back.easeOut, p._x, p.tox, speed, true);
 new Tween(p, "_y", Back.easeOut, p._y, p.toy, speed, true);
 //利用Tween类,让每个"点"移动到他们的终点坐标
}

1 2  下一页

Tags:AS 功能 代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接