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) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。
 
