实战微信JS SDK开发:贺卡制作与播放(2)
来源:互联网 发布:angelababy直播软件 编辑:程序博客网 时间:2024/04/30 04:27
最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTK和GameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧。这个贺卡APP完全开源,有需要的朋友可以随意修改和发布。
CanTK(Canvas ToolKit)是一个开源的游戏引擎和APP框架,是开发HTML5游戏和APP的利器,如果你喜欢它,请在github上给它加星,您的支持是我们努力的动力:https://github.com/drawapp8/cantk
0.先Show一下最终成果:
在线运行:http://gamebuilder.duapp.com/apprun.php?appid=osgames1-821423377846894
在线编辑:http://gamebuilder.duapp.com/gamebuilder.php?appid=osgames1-821423377846894
微信扫码:
今天我们介绍一下骨骼动画:
为了支持骨骼动画,CanTK里集成了DragonBones,通过Gamebuilder添加骨骼动画非常简单,只要两步可以实现:
第一步,从左边的工具栏中拖一个骨骼动画到场景中。
第二步,设置骨骼动画的参数,也就是从dragonebones制作工具中导出的三个文件。
制作贺卡的APP有点特别:拜年的几个卡通人物是骨骼动画,我们允许用户用自己的头像替换这些卡通人物的头像。所以特地在UISkeletonAnimation中加了两个函数(下列代码可以CanTK的github仓库中找到):
UISkeletonAnimation.prototype.getSlotRect = function(name) { if(!this.armature) { return null; } var slotList = this.armature._slotList; for(var i = 0; i < slotList.length; i++) { var iter = slotList[i]; if(iter.name === name) { var display = iter.getDisplay(); return display.textureAtlasRect; } } return null;}UISkeletonAnimation.prototype.replaceSlotImage = function(name, image, imageRect) { if(!this.armature) { return this; } var slotList = this.armature._slotList; for(var i = 0; i < slotList.length; i++) { var iter = slotList[i]; if(iter.name === name) { iter.image = image; iter.imageRect = imageRect; } } return;}
我们还需要在DragonBones的绘制函数里Hack一下:
<span style="color:#444444;"> function slotDraw(slot, ctx) { var display = slot._displayBridge.getDisplay(); var texture = slot.getDisplay().textureAtlas; if(!texture) { var armatureDisplay = slot.getDisplay(); var armature = armatureDisplay.armature; if(armature.draw) { armature.draw(ctx); } return; } var image = texture.image; var r = display.textureAtlasRect; </span><span style="color:#ff0000;"> if(slot.image && slot.imageRect) { image = slot.image; r = slot.imageRect; }</span><span style="color:#444444;"> ctx.save(); m.identity(); m.appendTransform(display.x, display.y, display.scaleX, display.scaleY, 0, display.skewX, display.skewY, display.anchorX, display.anchorY); ctx.transform(m.a, m.b, m.c, m.d, m.tx, m.ty); ctx.drawImage(image, r.x, r.y, r.width, r.height, 0, 0, r.width, r.height); ctx.restore(); }</span>
好了,骨骼动画的问题就搞定了。
- 实战微信JS SDK开发:贺卡制作与播放(2)
- 实战微信JS SDK开发:贺卡制作与播放(1)
- 微信 JS-SDK 开发
- 微信JS-SDK开发
- 微信自定义分享JS-SDK制作
- 微信JS-SDK,助力网页开发
- 微信开发JS-SDK使用详解
- 微信公众号开发JS-SDK
- 微信开发:js sdk 分享(java)
- 【微信公众平台开发】微信JS-SDK开发
- nodejs微信开发--调用微信JS SDK
- 微信开发之微信JS-SDK说明文档
- 微信JS-SDK
- 微信JS SDK
- 微信JS-SDK
- 微信JS-SDK
- 微信 JS-SDK
- 微信JS-SDK说明文档之JS接口开发
- 公司年会
- Android 中 RegistrantList消息处理机制 以android 5.0 MT为例
- javascript学习笔记
- Essential Studio Reporting Edition报表控件介绍
- Oracle EBS GL经常性日记帐(1)-设置和用应
- 实战微信JS SDK开发:贺卡制作与播放(2)
- CC Call Proceeding和CC Progress的区别
- 揭开“磁盘阵列RAID”的神秘面纱
- 学习Hadoop MapReduce与WordCount例子分析
- 大数相乘
- Windows数字签名
- Codeforces291div2
- Java开发者易犯错误
- 【Linux】Linux一些经典书籍及学习建议