【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
[Actionscript3] 纯文本查看 复制代码 //显示对象小练习之五;(Bitmap及BitmapData)
//在上一个练习的基础上加个点击事件,让图片动起来;
package{
//导入基类和两个位图相关类;
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
//导入和位图操作相关的两个类;
import flash.geom.Point;
import flash.geom.Rectangle;
//导入鼠标事件CLICK;
import flash.events.MouseEvent;
public class SampleBitMove extends Sprite{
//定义三个显示对象实例;
private var bit:Bitmap;
private var bpd:BitmapData;
private var sp:Sprite;
//定义两个数组,一个用来存放位图,一个用来存放容器;
private var bitArr:Array;
private var spArr:Array;
//定义一个图片变量(该图片已导入到库里);
private var pic:hh;
//构造函数中三个方法;
public function SampleBitMove():void{
//初始化实例;
init();
//切割位图;(五个参数:位图源,存放位图的数组,存放容器的数组,横块数,纵块数)
cutP(bpd,bitArr,spArr,3,3);
//trace(bitArr)
//移动图片;
addMoveP(sp,bitArr,spArr);
//把sp容器加载到舞台;
addChild(sp);
}
//移动图片方法;
private function addMoveP(ss:Sprite,bbA:Array,ssA:Array):void{
//让容器大小适应舞台;
ss.scaleX=this.stage.stageWidth/ss.width;
ss.scaleY=this.stage.stageHeight/ss.height;
//添加侦听器;
ssA[4].addEventListener(MouseEvent.CLICK,moveP);
//输出一句话,方便调试;
trace("请点击中间的图片!");
}
//侦听器;
private function moveP(e:MouseEvent):void{
//调整位图数组里元素的顺序;
bitArr.push(bitArr.shift());
//借助for循环,把新位图数组里的位图重新显示;
for(var i:int=0;i<bitArr.length;i++){
spArr[i].addChild(bitArr[i])
}
}
//切割位图的方法;
private function cutP(bitd:BitmapData,bitA:Array,spA:Array,_x:uint,_y:uint):void{
//定义一个变量,方便操作数组;
var k:int=0;
//把bitd实例复制出来,以防后面的操作改变原有内容;
var xbpd:BitmapData=bitd.clone();
//设置小块的宽高;
var _w:Number=xbpd.width/_x;
var _h:Number=xbpd.height/_y;
//用for循环,借助copyPixels方法切割位图;
for(var j:int=0;j<_y;j++){
for(var i:int=0;i<_x;i++){
//在循环体内定义变量,使变量的指向固定;
var ybpd:BitmapData=new BitmapData(_w,_h,false,0x009900);
//切割方法,三个参数:位图源,区域,目标位置;
ybpd.copyPixels(xbpd,new Rectangle(i*_w,j*_h,_w,_h),new Point(0,0));
//把复制的位图推送到位图数组;
bitA.push(new Bitmap(ybpd));
//在循环体内定义容器变量,让变量的指向固定;
var xsp:Sprite=new Sprite();
//用容器加载图片,方便操作该位图;
xsp.addChild(bitA[k]);
//再用循环体外的容器加载容器并推送到容器数组,方便在循环体外操作位图;
spA.push(sp.addChild(xsp));
//调整容器数组里各元素的位置;
spA[k].x=i*(_w+5);
spA[k].y=j*(_h+5);
//变量k自加,保证遍历数组中所有元素;
k++;
}
}
//输出执行语句,方便调试;
trace("图片切割完成!");
}
//初始化实例函数;
private function init():void{
pic=new hh();
bpd=pic as BitmapData;
sp=new Sprite();
//初始化数组;
bitArr=[];
spArr=[];
//加载到舞台,方便查看;
/*bit=new Bitmap(bpd);
sp.addChild(bit)
addChild(sp);
*/}
}
}
|