最近同事用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)相关推荐

  1. 实战微信JS SDK开发:贺卡制作与播放(1)

    前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...

  2. 微信JS SDK开发 共享问题小结

    首先,我要吐槽一下这个SDK,看了第一遍,完全不知所云,一会获取这个,一会获取那个,也没确切的告诉怎么获取. 和腾讯客服(拿钱不干事的好工作)讨教,人家不懂技术,不知道怎么解决,也没有相关技术人员对应 ...

  3. 微信JS SDK开放,前端开发者“鸡冻”了!

    HTML5又一次逆袭了,其实之前微信也是有一些JS API的,比如分享.但这次一股脑开放了拍摄.录音.语音识别.二维码.地图.支付.分享.卡券等几十个API,这条消息不需宣传,瞬间就占满了HTML5从 ...

  4. 使用微信js sdk关于选择及上传图片至腾讯云COS

    使用微信js sdk关于选择及上传图片至腾讯云COS 使用微信js sdk关于选择及上传图片至腾讯云COS 背景 名词 参考 效果图展示 开发步骤 1:概要步骤 2:上代码 结束: 使用微信js sd ...

  5. 微信-js sdk invalid signature签名错误 问题解决

    微信-js sdk invalid signature签名错误 问题解决 参考文章: (1)微信-js sdk invalid signature签名错误 问题解决 (2)https://www.cn ...

  6. 微信js sdk 分享 失败 有时候好 有时候坏

    微信js sdk 分享 失败  有时候好 有时候坏 用了一个www开头的域名 和一个xx.com的域名 两个在解析上有问题. 实践是www.xx.com的比较 稳定 转载于:https://www.c ...

  7. 微信js sdk 授权上传头像下载代码片段和注意事项

    /*  * 描述:当前页授权  * @param url   例:index.html / 如果有参数,需加密index.html?id=1     */ 1.对需要运用js sdk的页面授权 get ...

  8. 基于Arduino Uno开发板制作音乐播放器

    基于Arduino Uno开发板制作音乐播放器 本文将基于Arduino开发板实现一个音乐播放器. 利用Arduino Uno读取sd卡模块中内存卡的音乐,传输信号到扬声器进行播放. 一.项目软硬件简 ...

  9. php转发朋友圈缩略图片,解释最全的,手把手教的微信JS sdk分享设置教程-微信分享插件PHP源码JS-SDK接口,分享到朋友圈 转发好友带缩略图...

    亲们,此文是我上传的有关微信分享插件PHP源码JS-SDK接口的.rar和.zip的说明使用文件 许多朋友都面临自己编写的网站通过微信转发时,无论是分享微信好友或是微信朋友圈时,出现无缩略图显示的问题 ...

最新文章

  1. Android底层开发之Audio HAL Android Audio Overview
  2. 独家交付秘籍,你确定不点开看看?
  3. ichat在线客服jQuery插件(可能是历史上最灵活的)
  4. 电脑技巧:电脑卡顿的4个优化小技巧,太有用了!
  5. Invalid character found in the request target. The valid characters are defi
  6. 【转】C++学习一 结构与结构体
  7. java 获取网卡信息_java 使用 java.net.InterfaceAddress 获取网卡信息
  8. 48. Rotate Image java solutions
  9. Map对象与实体类Object对象转换
  10. 【机械仿真】基于matlab水下机器人机械手系统仿真【含Matlab源码 1264期】
  11. 17082 两个有序数序列中找第k小(优先做)
  12. 宏观经济判断指标-GDP、CPI、PPI、PMI
  13. 服务器美国视频网站吗,美国服务器可以做视频网站吗
  14. LINUX软中断-softirq
  15. 条件极值(拉格朗日乘数法)_Simplelife_新浪博客
  16. 图像配准(image registration)与图像融合(image fusion)
  17. python都需要安装哪些库_python常用到哪些库?
  18. 有趣python 小项目 大全
  19. ClassPathXmlApplicationContext 源码解析
  20. 苹果应用打包IPA之后上线以及签名

热门文章

  1. 新买的笔记本电脑怎么分盘_一番对比后终剁手3999元水桶型笔记本电脑,机械革命S1 Pro评测...
  2. 根据三角形三边长度,判断为直角三角形、钝角三角形还是锐角三角形
  3. 深度学习与自然语言处理第四次大作业
  4. golang常用库之-操作redis go-redis/redis库、 go-redsync/redsync库(redis分布式锁)
  5. 手机电池如何正确的充电?
  6. [附源码]SSM计算机毕业设计幼儿园管理系统JAVA
  7. 在制定调薪计划和沟通调薪结果时,我们到底该做什么
  8. 五万字15张导图Java自学路线,小白零基础入门,程序员进阶,收藏这篇就够了
  9. 用python画佩奇
  10. Python连接SQLserver数据库