7以前,FLASH游戏,碰到大位图的背景移动明显会显的比较吃力,会占用比较多的CPU资源。而且在控制移动速度方面也非常的困难。好一点的解决办法是把位图分割成小块,然后分块移动,但也是非常的麻烦。
好在8里提供了BitmapData对象,利用这个对象,为这一问题提供了很好的解决方案。
当熟练使用该对象以后,无论多么大的位图都可以流畅的显示出来。
7以前的大位图移动方式
点击浏览该文件
8下的大位图移动;
点击浏览该文件
当然目前的版本非常的简单,只有一个方向的移动方式,且不支持动态控制速度。(类似双截龙一样的卷轴背景),但一旦你对这些代码理解以后,相信做起来并不难。
这个组件的代码非常简单。
import?flash.display.BitmapData;
import?flash.geom.Rectangle;
import?flash.geom.Point;
logo?=?flash.display.BitmapData.loadBitmap(pic);
w1=?logo.width;
h1=?logo.height;
th=h1-h;?//th就是要显示的区域的最左上角纵坐标,灵活的控制它的大小可以实现对背景的控制
this.createEmptyMovieClip("holder_mc",1);
var?bitmap_1=?new?BitmapData(w,?h?,?false,?0xFFFFFFFF?);
holder_mc.attachBitmap(bitmap_1?,1);
this.onEnterFrame?=?function()
?{
??th?-=sco;
??if?(th<0)?{
???sco=0;
???th=0;
??}
?bitmap_1.copyPixels(logo,?new?Rectangle(0,?th,?w,?h),?new?Point(0,?0));
//?最主要的就是该句的作用,它的作用是在bitmap_1内填充一个矩形,而矩形区域的颜色来自logo的一个矩形区域,该矩形区域的横坐标为0,高坐标为th,宽为w,高为h.
}
提醒,该组件同样支持拉伸和旋转。希望这个技巧可以帮到大家 以上文件请使用FLASH8.0打开。