因为矢量图的表现力毕竟有限,因此我们经常需要使用外部的图片来显示文字等信息,最多的情况就是显示数字和字母。

但是,如果将每个数字或者字母做成一个图片,在程序运行过程中,就要载入许多的小文件,这样出错的几率就会变大,而且也会影响网络性能。因此,我写了两个类来处理这种情况。

例如:要使用0-9的数字图片,可以将0-9拼在一张长条形的图片中,载入后使用 BMPSlicer 来切割,切割后,就可以使用 BMPText 来显示它。

下图就是被切割的图片:

Timer测试图片

程序效果演示:

您的浏览器不支持JavaScript,或者您禁用了JavaScript。

请启用浏览器的JavaScript支持。

如果您确认启用了JavaScript,请使用下面的链接升级Flash Player到最新版本:

安装最新的Flash Player插件

测试程序源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
import org.zengrong.display.BMPText;
[SWF(width=200,height=100,backgroundColor=0xCCCCCC)]
public class BMPTextTest extends Sprite
{
public function BMPTextTest()
{
_bmpText = new BMPText('0123456789', 46, 52, true, Bitmap(new _timerClass()).bitmapData);
_bmpText.gap = -10;
addChild(_bmpText);
_timer = new Timer(100, 99999);
_timer.addEventListener(TimerEvent.TIMER, handler_timer);
_timer.start();
this.addEventListener(Event.ADDED_TO_STAGE, handler_addToStage);
}
[Embed(source="timer.png")]
private static var _timerClass:Class;
private var _bmpText:BMPText;
private var _timer:Timer;
private function handler_addToStage(evt:Event=null):void
{
_bmpText.x = stage.stageWidth/2 - _bmpText.width/2;
_bmpText.y = stage.stageHeight/2 - _bmpText.height/2;
}
private function handler_timer(evt:TimerEvent):void
{
_bmpText.text = _timer.currentCount.toString();
handler_addToStage();
}
}
}

BMPText与BMPSlicer源码

留言

2010-12-09
次访问