qq229449388 发表于 2017-11-16 01:19:35

羔羊引擎之图片的把戏

本帖最后由 qq229449388 于 2017-11-28 23:06 编辑

大家做游戏,做应用或者做动画,都会用到图片,羔羊引擎对于图片的使用,提供了丰富的图片类,这节说说羔羊引擎中,GYImage,GYRateImg,GYSeqImage 3个图片类。先看看使用效果
http://zsh.gyarea.com/GYLiteLesson/swfs/lesson7/GYLiteAPI.swf
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())
**** Hidden Message *****

niu6465266 发表于 2018-1-30 10:38:46

666666666666666666666666

690275538 发表于 2018-1-31 09:32:03

6666666666666

早起的虫儿 发表于 2019-5-8 17:33:52

6666666666666666666666666666

nocon123 发表于 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)