11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2644|回复: 4
上一主题 下一主题

[BitmapData 图像] 显示对象小练习之五;(Bitmap及BitmapData并添加点击事件)

[复制链接] TA的其它主题
发表于 2019-2-28 10:50:02 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入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);
*/}
}
}



评分

参与人数 1银子 +10 金子 +1 贡献 +1 收起 理由
TKCB + 10 + 1 + 1 11RIA six six six.(666)

查看全部评分

发表于 2019-2-28 11:54:56 | 显示全部楼层
【11RIA 闪客社区,评分公示】:
是否有价值:一般(银子 +10  贡献 +1)
是否原创:是(金子 +1)
是否翻译:否
如对自己的评分有疑问,则咨询版主、管理员等。
回复

使用道具 举报

发表于 2019-3-18 10:40:55 | 显示全部楼层
看得懂代码,但是如果让我自己写就写不出来
回复

使用道具 举报

发表于 2019-3-18 12:23:43 | 显示全部楼层
不错不错,收藏一下
回复

使用道具 举报

 楼主| 发表于 2019-3-19 06:25:18 | 显示全部楼层
ganggang_lantia 发表于 2019-3-18 12:23
不错不错,收藏一下

大家一起学习,才有劲头!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表