【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 雪原xy 于 2019-2-25 15:21 编辑
[Actionscript3] 纯文本查看 复制代码 //显示对象小练习之四(Bitmap);
package{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.display.Stage;
import flash.display.StageScaleMode;
import flash.display.StageAlign
public class dis4 extends Sprite{
//定义一个BitmapData的实例,用来操作位图;
private var _bmpdt:BitmapData=new BitmapData(50,80,false,0x005588);
//定义一个Bitmap实例,加载BitmapData实例;
private var _bmp:Bitmap=new Bitmap(_bmpdt);
var _loader:Loader=new Loader();
//构造函数中执行两个重要方法:一是加载图片,一是切割图片;
public function dis4 ():void{
this.stage.scaleMode=StageScaleMode.EXACT_FIT;
this.stage.align=StageAlign.TOP_LEFT;
//规划位图位置;
//_bmp.x=100;
//_bmp.y=80;
//把位图加入显示列表,看看效果;
//addChild(_bmp);
//加载位图的方法;
initLoader();
//切割位图的方法;
//cutFun();
}
//定义切割方法;
private function cutFun():void{
//定义切割后小图片块的块数变量;
var _xx:int=3;
var _yy:int=3;
//根据块数计算每个小块的宽高;
var _w:Number=_bmpdt.width/_xx;
var _h:Number=_bmpdt.height/_yy;
//用copyPixels方法,借助for循环,复制每小块的像素数据;
for(var i:int=0;i<_xx;i++){
for(var j:int=0;j<_yy;j++){
//定义一个BitmapData变量,用来存放切割后的BitmapData数据;
var _bt:BitmapData=new BitmapData(_w,_h,false,0x000000);
//循环体中定义一个容器,用来显示每次切割好的位图;
var _s:Sprite=new Sprite();
//切割(复制)方法:三个参数分别是源数据,切割的位置及大小,复制后存放的位置;
_bt.copyPixels(_bmpdt,new Rectangle(j*_w,i*_h,_w,_h),new Point(0,0));
//定义一个Bitmap变量,用来加载复制好的BitmapData数据;
var _bp:Bitmap=new Bitmap(_bt);
//_s.width=_bp.width=this.stage.stageWidth/_xx;
//_s.height=_bp.height=this.stage.stageHeight/_yy;
//规划容器的位置;
_s.x=j*(this.stage.stageWidth/3+5);
_s.y=i*(this.stage.stageHeight/3+5);
//让容器的大小适应切割块的大小;
_s.scaleX=(this.stage.stageWidth/3)/_w;
_s.scaleY=(this.stage.stageHeight/3)/_h;
//把容器放入显示列表;并把切割好的位图放入容器;
addChild(_s);
_s.addChild(_bp);
//把每次显示出的的图片的代号输出,看看是不是自己想要的结果;
trace("图片:"+i+j)
}
}
trace("图片裁剪完成!")
}
//导入图片的方法;
private function initLoader():void{
//定义图片的地址变量,并用Loader类进行加载;
var _ur:String= "img/hh.JPG";
var _req:URLRequest=new URLRequest(_ur);
//用Loader类的contentLoaderInfi属性侦听加载进度;
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadF);
//设置一个捕获异常的命令,在加载图片的过程中捕获异常;
try{
trace("图片加载中……");
_loader.load(_req);
//把位图加入显示列表,看效果;
//addChild(_loader);
}
catch(e:Error){
trace("图片加载出现异常:"+e.name);
}
}
//图片加载侦听器;
private function loadF(ev:Event):void{
var xb:Bitmap=ev.target.content as Bitmap;
//把加载好的图片赋值给_bmp实例,Loader类的content属性在这里就是位图;
_bmp=xb;
//让加载的图片大小适应舞台;
_bmp.width=this.stage.stageWidth;
_bmp.height=this.stage.stageHeight;
//把_bmp的bitmapData属性赋值给_bmpdt,到此加载图片的任务全部完成;
_bmpdt=_bmp.bitmapData;
//把加载好的图片显示出来对比一下;
//addChild(xb);
//addChild(_bmp);
trace("图片加载完成!");
//看看这时位图数据的高是否等于舞台的高;
trace(_bmpdt.height);
//切割位图的方法;
cutFun();
}
}
}
|