为了参加imaginecup 2013
世界公民类比赛,我们设计制作了一个可动态扩展的幼教类app。这个app需要能动态加载内容,内容包括带动画可交互的电子书,动画,视频,游戏。
2012年10月第一次:因为svg性能问题,将svg换为cocos2d-x jsbind,可惜cocos2d-x
jsbind不完善,最后换为cocos2d-x html5。11月第二次:cocos2d-x
html5性能问题,破产。12月第三次:取消html5,转为使用xaml+js模式。
(微软的winrt明显就是阉割的wpf,查过动态加载相关的类库,只允许加载安装时已包含的dll。)
用xaml来做前台页面,性能比html的高很多,而且制作十分方便,微软擅长做ide嘛,blend配合adobe的ai出矢量界面、动画十分迅速,我们的美工上手也快。
用js来做后台逻辑也是很方便的,为了程序流程方便管理后来用状态机做了个程序制作工具。
由于xaml和js本质上都是文本,所以加密非常容易,win8metro做aes加密很容易,可以很好的保护代码。(额...反编译c#代码获取aes密钥不在讨论范围内...)
根据需要另集成了物理引擎。
相关技术传送门+
+ uppbox - 基于websocket的跨界应用通信框架(待写)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1UDOzkDM3IzNzITM1ITOwgTMwIzLcVDM0EDMy8CXvZmbp9CXt92YuUGZvNWatFWbuU2Zh1Wavw1LcpDc0RHaiojIsJye.png)
xaml与c#代码通信
网上有个win8metro的框架,其中interactive部分就可以把wpf中的behavior、eventtrigger带回来。
至于js与c#通信那就简单了,webview本身就有事件支持。
服务端为asp.net mvc/webapi,图片直接base64存数据库。
(代码没有重构过,比较乱,就不发布了。)
总体开发流程
外壳程序状态机流程图
其中一个游戏的部分状态机流程图
程序逻辑编辑器界面
html5支持websocket可以连接uppbox,自写的js状态机引擎在调试模式下可以把与c#代码交互过程全部传输出来,还可以传输指令,方便调试。
xaml+js协议文档,大部分命令都支持写在xaml自动触发或js发送
配套的app测试平台...没什么用的机会了...