散仙
阅读权限 3
积分 1908
侠名
UID 42
主题
帖子
精华
好友
银子
金子
贡献
威望
推广
活跃
荣耀
注册时间 2017-11-7
最后登录 1970-1-1
在线时间 小时
个人主页
|
【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 qq229449388 于 2017-11-28 23:06 编辑
大家做游戏,做应用或者做动画,都会用到图片,羔羊引擎对于图片的使用,提供了丰富的图片类,这节说说羔羊引擎中,GYImage,GYRateImg,GYSeqImage 3个图片类。先看看使用效果
1 GYImage
最起码显示图片,总得需要一个能显示位图数据(BitmapData)的容器,有人会说Bitmap不就可以了,为何还闲着没事蛋疼,弄个GYImage。这里要说明一下,无论你使用任何引擎,任何组件库,都不会使用原始的Bitmap,而会封装一个Image的类,为何说Bitmap原始,因为Bitmap仅仅用于显示图片,没有多余的功能。Bitmap不能点击,不能根据容器进行相对布局,所以封装适合环境的基本Image是需要的,GYImage是可点击,设置width和height可拉伸到足够尺寸,并且有提供锚点属性,调整中心点。创建GYImage代码如下
- var img:GYImage = new GYImage;
- img.source = testBitData;//添加位图数据
- s.addChild(img);//s为父级容器
复制代码 2 GYRateImg
制作游戏的时候,免不了要播放一些动画,例如人物动作,站立,奔跑,攻击等等。GYRateImg就是针对这些连续动作的图制作的,大家都叫序列图,下面以播放人物为例,准备一张序列大图
可以看到有8格人物图,顺便简单讲讲实现播放这种图的原理,实际上,我们只需要每隔一段很小的时间,切换一格图片,就形成动画效果,自己使用bitmap切换bitampData也能做到。
而GYRateImg则是使用as3提供的graphics接口,as3不懂的,大家去翻翻api,不多说了。看看如何使用GYRateImg
- var shape:GYShape = new GYShape;
- s.addChild(shape);//先在舞台添加一个shape,GYShape跟Shape一样只是封装了一下布局
- var rateImg:GYRateImg = new GYRateImg(1,8,8,120); //参数分别为,行,列,帧数,每帧间隔
- rateImg.graphics = shape.graphics;//绑定到shape的graphics
- rateImg.x = 50;
- rateImg.y = 300;
- rateImg.reserveEnd = true;//这个属性控制是否播放到最后一帧就倒播,因为有的序列图是来回播放的
- rateImg.start(testBitData2,0);//这是启动播放的方法,两个参数,一个是位图数据,一个是从第几帧播放
复制代码 详细的属性和方法请看api
3 GYSeqImage
GYSeqImage功能其实和GYRateImg一样,也是播放序列图,但是使用的图是位图数组,内部切换bitmapData的方式进行播放。有人这里会说,逗比啊,为了使用不同格式的图,搞多一个类。这里得说明一下,切换bitmapData的效率是比graphics高的,尤其在手机上使用,必须用这种方式来播放。
- var seqImg:GYSeqImage = new GYSeqImage;
- seqImg.source = GYDrawBitmapData.cutBitmapData(testBitData2, 1, 8);//传入位图数据
- seqImg.intervalTime = 120;//每帧间隔120毫秒
- seqImg.reserveEnd = true;
- seqImg.x = 300;
- seqImg.y = 300;
- s.addChild(seqImg);
复制代码这里特别说明一下GYDrawBitmapData.cutBitmapData是切割一张大序列图为多张小图存放到临时位图数组里面
这个方法参数其实为5个
分别为,位图,切割行数,切割列数,帧数,是否缓存(不缓存过一段时间会自动销毁,缓存注意自己要手动释放数组里面的GYDrawBitmapData,释放方法为relRef())
|
|