实战微信JS SDK开发:贺卡制作与播放(2)
最近同事用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)
前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...
- 微信JS SDK接入的几点注意事项
微信JS SDK接入,主要可以先参考官网说明文档,总结起来有几个步骤: 1.绑定域名:先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”.备注:登录后可在“开发者中心”查看对 ...
- 微信js sdk上传多张图片
微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="111111111111 ...
- 微信js sdk分享开发摘记java版
绑定域名和引入js的就不说了 废话不说直接上代码 public void share(HttpServletRequest request) throws Exception { StringBuff ...
- 调用微信js sdk
场景:需要调用微信获取当前位置的借口. 途径:查看微信 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 .后 ...
- 微信JS SDK配置授权,实现分享接口
微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...
- 微信js SDK接口
微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...
- 微信JS SDK Demo
微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置原文:http://www.cnblogs.com/txw1958/p/ ...
- 微信JS SDK使用权限签名算法
jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据.正常情况下,jsapi_ticket的有效期为7200秒, ...
随机推荐
- Java线程池与java.util.concurrent
Java(Android)线程池 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行 ...
- 互联网扫描器 ZMap 完全手册
初识 ZMap ZMap被设计用来针对整个IPv4地址空间或其中的大部分实施综合扫描的工具.ZMap是研究者手中的利器,但在运行ZMap时,请注意,您很有 可能正在以每秒140万个包的速度扫描整个IP ...
- 【leetcode❤python】 299. Bulls and Cows
#-*- coding: UTF-8 -*-class Solution(object): def getHint(self, secret, guess): " ...
- 【leetcode❤python】Move Zeroes
#-*- coding: UTF-8 -*- #filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,#把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤.最终一 ...
- TeeChart曲线平滑 Line.Smoothed
需要注意的是,在加载点之前,需要设置Smoothed属性为false 等点加载完成之后,再设置Smoothed属性为true, //如果直接设置Smoothed为true再去加载点的话,曲线就完全不显 ...
- oracle学习笔记——配置环境
题记:最近再学oracle,于是按照这本经典的书<Oracle Database 9i/10g/11g编程艺术>来学习. 配置环境 如何正确建立SCOTT/TIGER演示模式 需要建立和运 ...
- 第二篇,MVC框架
MVC : 模型(model)---视图(view)---控制器(caontreller)的缩写 MVC是一个设计模式,他强制性的使应用程序的输入,处理,输出 分开 模型(Model):程序员编写程序 ...
- 使用一个封装的json删除方法
<!-- 前台js代码:其实现的目的:利用异步的封装方法实现增删改操作!--> <script type="text/javascript"> functi ...
- org.apache.http.client.CircularRedirectException: Circular redirect to "http://xxx"问题解决
org.apache.http.client.CircularRedirectException: Circular redirect to "http://xxx"问题解决 ...
- c++复习一:复数运算的简单实现。
复数运算的简单实现. 程序很简单了.基本忘光了复数,重新了解了基本概念.如何在平面表示一个复数,复数的长度|x|=开根 a^2+b^2.和四则运算. 程序基本点: 封装和抽象: 1)封装成员数据,私有 ...