巧用Bitmap类制作按钮

7次阅读

最近在制作 flash 时需要制作一个可以随意设定宽度的按钮组件. 为了保证按钮样式不变形, 一般都会采用将按钮分成几个 mc 的方法来制作. 但其实, 如果对按钮的动态效果要求不多的话, 完全可以使用 Bitmap 类来制作. 下面是将按钮的一个状态分解开来. 一般的思路是做为三个 MC, 然后在改变宽度是, 动态改变中间 mc 的宽度就可以了。但是这样的话, 对于元素的制作就比较麻烦. 使用 bitmap 类可以直接将一张图片分为三个 MC 后生成. 在批量使用时, 效率提高了不少.

巧用 Bitmap 类制作按钮

方法:

/**
 * date  : 2007.2.6
 * author : Frank
 * site  : http://www.2solo.net/log
 */
import flash.display.*;
import flash.geom.Rectangle;
import flash.geom.Point;
install_img("mT_over_bmp", 200, 158, 5, bmp_mc);
function install_img(image_url, center_width, face_width, bar_left, tar_mc) {
 //image_url: 目标图片路径
 //center_width: 整体宽度
 //face_width: 初始位图宽度
 //bar_left: 边侧 mc 宽度
 //tar_mc: 所要加载的容器地址
 /// 定义原始
 var linkageId:String = image_url;
 var myBD:BitmapData = BitmapData.loadBitmap(linkageId);
 if (tar_mc == undefined || tar_mc == "") {
  tar_mc = this;
 }
 //bmp_mc.attachBitmap(myBD, this.getNextHighestDepth());                                       
 face_width = face_width-2*bar_left;
 /// 新建 MC
 tar_mc.center_mc.removeMovieClip();
 tar_mc.left_mc.removeMovieClip();
 tar_mc.right_mc.removeMovieClip();
 var center_mc:MovieClip = tar_mc.createEmptyMovieClip("center_mc", tar_mc.getNextHighestDepth());
 var left_mc:MovieClip = tar_mc.createEmptyMovieClip("left_mc", tar_mc.getNextHighestDepth());
 var right_mc:MovieClip = tar_mc.createEmptyMovieClip("right_mc", tar_mc.getNextHighestDepth());
 center_mc._x = bar_left;
 left_mc._x = 0;
 right_mc._x = center_width-bar_left;
 /// 新建图片数据
 var myBD_C:BitmapData = new BitmapData(face_width, myBD.height, true, 0x00FF0000);
 var myBD_L:BitmapData = new BitmapData(bar_left, myBD.height, true, 0x00FF0000);
 var myBD_R:BitmapData = new BitmapData(bar_left, myBD.height, true, 0x00FF0000);
 /// 拷贝图片
 myBD_C.copyPixels(myBD, new Rectangle(bar_left, 0, face_width, myBD.height), new Point(0, 0));
 myBD_L.copyPixels(myBD, new Rectangle(0, 0, bar_left, myBD.height), new Point(0, 0));
 myBD_R.copyPixels(myBD, new Rectangle(myBD.width-bar_left, 0, bar_left, myBD.height), new Point(0, 0));
 // 加载图片
 center_mc.attachBitmap(myBD_C, this.getNextHighestDepth());
 left_mc.attachBitmap(myBD_L, this.getNextHighestDepth());
 right_mc.attachBitmap(myBD_R, this.getNextHighestDepth());
 /// 调整距离
 center_mc._width = center_width-2*bar_left;
}
stop();

正文完