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

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

[★ AS3 引擎] 羔羊引擎之图片的把戏

[复制链接] TA的其它主题
发表于 2017-11-16 01:19:35 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入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代码如下
  1. var img:GYImage = new GYImage;
  2. img.source = testBitData;//添加位图数据
  3. s.addChild(img);//s为父级容器
复制代码
2 GYRateImg
制作游戏的时候,免不了要播放一些动画,例如人物动作,站立,奔跑,攻击等等。GYRateImg就是针对这些连续动作的图制作的,大家都叫序列图,下面以播放人物为例,准备一张序列大图
stand.png
可以看到有8格人物图,顺便简单讲讲实现播放这种图的原理,实际上,我们只需要每隔一段很小的时间,切换一格图片,就形成动画效果,自己使用bitmap切换bitampData也能做到。
而GYRateImg则是使用as3提供的graphics接口,as3不懂的,大家去翻翻api,不多说了。看看如何使用GYRateImg


  1. var shape:GYShape = new GYShape;
  2.                         s.addChild(shape);//先在舞台添加一个shape,GYShape跟Shape一样只是封装了一下布局
  3.                         var rateImg:GYRateImg = new GYRateImg(1,8,8,120); //参数分别为,行,列,帧数,每帧间隔
  4.                         rateImg.graphics = shape.graphics;//绑定到shape的graphics
  5.                         rateImg.x = 50;
  6.                         rateImg.y = 300;
  7.                         rateImg.reserveEnd = true;//这个属性控制是否播放到最后一帧就倒播,因为有的序列图是来回播放的
  8.                         rateImg.start(testBitData2,0);//这是启动播放的方法,两个参数,一个是位图数据,一个是从第几帧播放
复制代码
详细的属性和方法请看api

3 GYSeqImage
GYSeqImage功能其实和GYRateImg一样,也是播放序列图,但是使用的图是位图数组,内部切换bitmapData的方式进行播放。有人这里会说,逗比啊,为了使用不同格式的图,搞多一个类。这里得说明一下,切换bitmapData的效率是比graphics高的,尤其在手机上使用,必须用这种方式来播放。
  1. var seqImg:GYSeqImage = new GYSeqImage;
  2.                         seqImg.source = GYDrawBitmapData.cutBitmapData(testBitData2, 1, 8);//传入位图数据
  3.                         seqImg.intervalTime = 120;//每帧间隔120毫秒
  4.                         seqImg.reserveEnd = true;
  5.                         seqImg.x = 300;
  6.                         seqImg.y = 300;
  7.                         s.addChild(seqImg);
复制代码

这里特别说明一下GYDrawBitmapData.cutBitmapData是切割一张大序列图为多张小图存放到临时位图数组里面
这个方法参数其实为5个
分别为,位图,切割行数,切割列数,帧数,是否缓存(不缓存过一段时间会自动销毁,缓存注意自己要手动释放数组里面的GYDrawBitmapData,释放方法为relRef())


游客,如果您要查看本帖隐藏内容请回复

发表于 2018-1-30 10:38:46 | 显示全部楼层
666666666666666666666666
回复

使用道具 举报

发表于 2018-1-31 09:32:03 | 显示全部楼层
6666666666666
回复

使用道具 举报

发表于 2019-5-8 17:33:52 | 显示全部楼层
6666666666666666666666666666
回复

使用道具 举报

发表于 2020-5-28 10:18:47 | 显示全部楼层
6666666666666666666666666
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /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)



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