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

第一次在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类,让每个"点"移动到他们的终点坐标
}

Flash充电:MovieClip.cacheAsBitmap 属性

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

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

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

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

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

时间: 2024-12-02 23:30:04

[AS功能代码教程09] 点阵字效果的相关文章

[AS功能代码教程05] 打字机效果

思路:1.首先用AS创造出动态文本框,用于输出文字: 2.用计时器,每隔一段时间累加输出下一个字符. AS代码层: _root.createTextField("output", 1, 0, 0, 500, 400); var txt_f:TextFormat = new TextFormat(); txt_f.font = "宋体"; //设置字体 txt_f.color = 0x333333; //设置文字颜色 txt_f.size = 22; //设置文字大小

AS功能代码教程:鱼眼放大镜

下面我们先用图解法来解释一下本实例 思路: 1.鱼眼放大镜是于若干个渐小的圆组成的: 2.使每个圆都去遮罩一个渐大的图片来实现,里面的小圆遮罩大较图片,外面的大圆遮罩较小图片: 3.还有最后一个重要的步骤是"对焦",由于图片是渐大的,所以鼠标所在的一个点位对于小图来说也许是头部,而对于大图来说也许都到了场外,那么显示出的效果就错了.使用"对焦"可以让鼠标指在小图上是头部,大图上也要是头部,这么说给大家一个印象,下面请看图解.   1.首先在舞台上放入两个影片剪辑,其

AS 功能代码教程14] 鱼眼放大镜

本节加了星号,借黑羽的话:"本节的内容稍微有些难度,如果不明白,可以暂时不看,待日后碰到类似问题时,再来查阅" 下面我们先用图解法来解释一下本实例 思路: 1.鱼眼放大镜是于若干个渐小的圆组成的; 2.使每个圆都去遮罩一个渐大的图片来实现,里面的小圆遮罩大较图片,外面的大圆遮罩较小图片; 3.还有最后一个重要的步骤是"对焦",由于图片是渐大的,所以鼠标所在的一个点位对于小图来说也许是头部,而对于大图来说也许都到了场外,那么显示出的效果就错了.使用"对焦&q

[AS功能代码教程14] 鱼眼放大镜

本节加了星号,借黑羽的话:"本节的内容稍微有些难度,如果不明白,可以暂时不看,待日后碰到类似问题时,再来查阅" 下面我们先用图解法来解释一下本实例 思路: 1.鱼眼放大镜是于若干个渐小的圆组成的; 2.使每个圆都去遮罩一个渐大的图片来实现,里面的小圆遮罩大较图片,外面的大圆遮罩较小图片; 3.还有最后一个重要的步骤是"对焦",由于图片是渐大的,所以鼠标所在的一个点位对于小图来说也许是头部,而对于大图来说也许都到了场外,那么显示出的效果就错了.使用"对焦&q

[AS功能代码教程13] 贪吃蛇

思路: 1.首先规定蛇的运动区域宽度(stagew)和高度(stageh) 2.增加键盘侦听,获得键控代码,如果该键与前一个键是反向的则不予改变 3.初始化中, 请注意:蛇头.蛇身.食物的大小均为 7 象素 4.每一次移动的步长(Move)均为8象素,以实现身体为一格一格的效果 5.吃到食物后,蛇身(body)长度增加5个单位,复制出5个身体 6.履带式前进:从尾部开始,后一个跟随前一个的位置,最前面的跟随蛇头 图示: 1.整体思路 2.蛇头.蛇身.食物的大小均为 7 象素,步长 8 象素

[AS功能代码教程04] 进阶三角函数

在AS 03教程中,我们介绍了关于三角函数基础应用 现在为上次课的内容加以补充和发展 复习一下画圆的方法:x坐标cos(n),y坐标sin(n); n 从0-360的弧度 一.绘制椭圆 对比一下,我们只是把画圆方法中 R ,一分为二. 分成了 W 和 H 分别控制椭圆的宽和高. _root.createEmptyMovieClip("MC", 1); MC._x = 200; MC._y = 200; //创建一个空影片剪辑,放在舞台中央作为画线容器 var W = 50; var H

AS 功能代码教程

两点间距离 Math.sqrt(Math.pow((p1._x-p2._x),2)+Math.pow((p1._y-p2._y),2)) 由这个公式可以推导出某点与原点距离公式: 因为原点坐标为(0,0),所以公式变形如下 Math.sqrt(p1._x * p1._x + p1._y * p1._y) 下面我们就来运用这两个公式来制作一些效果 实例一: 旋转指针 思路: 求一个夹角的θ方法很多如: distance.jpg 正弦函数 sinθ=y/r 余弦函数 cosθ=x/r 正切函数 ta

flash 点阵字效果

第一次在fanflash上看到这个实例,感觉很不可思议 仔细研究一下发现,作者的构思还是很巧妙的,今天拿来与大家分享一下 这个实例可以说结合了BitmapData类的技术与Tween类的动感. 思路: 1.用AS创建一个空文本框,存储欲显示的字; 2.把这个文本框看成一个位图,并存储其位图数据; 3.逐行扫描这个位图数据,把有文字信息的像素点都存储到数组中; 4.最后根据数组复制出"点",并使每个"点"移动到相应的位置. 步骤1:     绘制10*10的圆点,保存

[AS功能代码教程15] 点间距离公式

AS表示: Math.sqrt(Math.pow((p1._x-p2._x),2)+Math.pow((p1._y-p2._y),2)) 由这个公式可以推导出某点与原点距离公式: 因为原点坐标为(0,0),所以公式变形如下 Math.sqrt(p1._x * p1._x + p1._y * p1._y) 下面我们就来运用这两个公式来制作一些效果 实例一: 旋转指针 思路: 求一个夹角的θ方法很多如: 正弦函数 sinθ=y/r 余弦函数 cosθ=x/r 正切函数 tanθ=y/x 余切函数 c