最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTKGameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧。这个贺卡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接入的几点注意事项

    微信JS SDK接入,主要可以先参考官网说明文档,总结起来有几个步骤: 1.绑定域名:先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”.备注:登录后可在“开发者中心”查看对 ...

  3. 微信js sdk上传多张图片

    微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="111111111111 ...

  4. 微信js sdk分享开发摘记java版

    绑定域名和引入js的就不说了 废话不说直接上代码 public void share(HttpServletRequest request) throws Exception { StringBuff ...

  5. 调用微信js sdk

    场景:需要调用微信获取当前位置的借口. 途径:查看微信 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 .后 ...

  6. 微信JS SDK配置授权,实现分享接口

    微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...

  7. 微信js SDK接口

    微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...

  8. 微信JS SDK Demo

    微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置原文:http://www.cnblogs.com/txw1958/p/ ...

  9. 微信JS SDK使用权限签名算法

    jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据.正常情况下,jsapi_ticket的有效期为7200秒, ...

随机推荐

  1. 【Java】ServerSocket的学习笔记

    公司有本<Java网络编程>一直闲置在书架上,反正我对Socket方面不太懂,今天跟着书学习一番. > 参考的优秀书籍 <Java网络编程> --中国电力出版社 > ...

  2. 深入理解C语言中的指针与数组之指针篇

    转载于http://blog.csdn.net/hinyunsin/article/details/6662851     前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...

  3. 通过两根RS232连接两台电脑

    把RS232的有5脚那边放下面,最左边是GND,第二三是TXD和RXD,两个RS232反接,然后两个usb连接电脑就可以通信了

  4. SqlSever基础 order by之后再orderby,双重排序,对排序好的数据中再次进行排序

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  5. nodejs链接mysql数据库,执行简单的增删改查操作

    var mysql = require('mysql'); var conn = mysql.createConnection({ host: 'localhost', user: 'root', p ...

  6. spring+hibernate 实体类注解问题

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.Ann ...

  7. arp中间人

    0x00 摘要 在本章第二层攻击当中,我们将进入网络hacking的奇幻之旅.让我们回顾一下,第二层是负责在以太网中,使用MAC地址来发送数据包.除了ARP攻击,我们将探讨交换机是如何应对DOS攻击的 ...

  8. 将文件读取到内存、打印pe结构

    #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <string.h&g ...

  9. 验证SMB登入

    使用SMB登入扫描器对大量主机的用户名和口令进行猜解,不过扫描动静很大,容易被察觉,而且每一次登入尝试都会被扫描的主机系统日志记录下来,留下痕迹不建议使用. 实例 第一步: msf > use ...

  10. SQL语句最基本的性能优化方法

    有些人还不知道sql语句的基本性能优化方法,在此我简单提醒一下,最基本的优化方法:   1.检查是否缺少索引.调试的时候开启“包括实际的执行计划”   执行后会显示缺少的索引,   然后让dba帮助添 ...