BMPText与BMPSlicer——将位图切割成块来显示文字
因为矢量图的表现力毕竟有限,因此我们经常需要使用外部的图片来显示文字等信息,最多的情况就是显示数字和字母。
但是,如果将每个数字或者字母做成一个图片,在程序运行过程中,就要载入许多的小文件,这样出错的几率就会变大,而且也会影响网络性能。因此,我写了两个类来处理这种情况。
例如:要使用0-9的数字图片,可以将0-9拼在一张长条形的图片中,载入后使用 BMPSlicer 来切割,切割后,就可以使用 BMPText 来显示它。
下图就是被切割的图片:
程序效果演示:
测试程序源码:
1package
2{
3import flash.display.Bitmap;
4import flash.display.Sprite;
5import flash.events.Event;
6import flash.events.TimerEvent;
7import flash.utils.Timer;
8
9import org.zengrong.display.BMPText;
10
11
12[SWF(width=200,height=100,backgroundColor=0xCCCCCC)]
13public class BMPTextTest extends Sprite
14{
15 public function BMPTextTest()
16 {
17 _bmpText = new BMPText('0123456789', 46, 52, true, Bitmap(new _timerClass()).bitmapData);
18 _bmpText.gap = -10;
19 addChild(_bmpText);
20 _timer = new Timer(100, 99999);
21 _timer.addEventListener(TimerEvent.TIMER, handler_timer);
22 _timer.start();
23 this.addEventListener(Event.ADDED_TO_STAGE, handler_addToStage);
24 }
25
26 [Embed(source="timer.png")]
27 private static var _timerClass:Class;
28
29 private var _bmpText:BMPText;
30 private var _timer:Timer;
31
32 private function handler_addToStage(evt:Event=null):void
33 {
34 _bmpText.x = stage.stageWidth/2 - _bmpText.width/2;
35 _bmpText.y = stage.stageHeight/2 - _bmpText.height/2;
36 }
37
38 private function handler_timer(evt:TimerEvent):void
39 {
40 _bmpText.text = _timer.currentCount.toString();
41 handler_addToStage();
42 }
43}
44}
- 文章ID:1202
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/bmptext-and-bmpslicer/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。