flash 点阵字效果

作者:袖梨 2022-07-02

第一次在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 y++) {

for (x=0; 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
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类,让每个"点"移动到他们的终点坐标


}

Flash充电:MovieClip.cacheAsBitmap
属性
1.作用:如果设置为 true,则 Flash Player
将缓存影片剪辑的内部位图表示。这可以提高包含复杂矢量内容的影片剪辑的性能。

2.原理:矢量图体积小,但比较消耗计算资源;位图则比较消耗内存资源,但对计算资源消耗小。

3.简单地说:cacheAsBitmap就是把矢量图转化成位图;节省CPU,但消耗内存,可以提高对于矢量图的运算速度。

4.注意:cacheAsBitmap最适用于包含大量静态内容,并不需要频繁scale和旋转的MC里。

5.默认:当你添加filter(滤镜)到MC上,cacheAsBitmap自动设置为true,这点即使你强行让cacheAsBitmap=false也改变不了。只有当你去掉filter,cacheAsBitmap将返回最新被设置的逻辑值。

相关文章

精彩推荐