BMPText与BMPSlicer——将位图切割成块来显示文字

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:BMPText与BMPSlicer——将位图切割成块来显示文字
  • 本文链接:http://zengrong.net/post/1202.htm

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

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

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

下图就是被切割的图片:

Timer测试图片

程序效果演示:


Get Adobe Flash
player

测试程序源码:

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源码