天天看点

Win8 Metro动态加载内容框架

为了参加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的跨界应用通信框架(待写)

Win8 Metro动态加载内容框架

xaml与c#代码通信

网上有个win8metro的框架,其中interactive部分就可以把wpf中的behavior、eventtrigger带回来。

至于js与c#通信那就简单了,webview本身就有事件支持。

服务端为asp.net mvc/webapi,图片直接base64存数据库。

(代码没有重构过,比较乱,就不发布了。)

Win8 Metro动态加载内容框架

总体开发流程

Win8 Metro动态加载内容框架

外壳程序状态机流程图

Win8 Metro动态加载内容框架

其中一个游戏的部分状态机流程图

Win8 Metro动态加载内容框架

程序逻辑编辑器界面

Win8 Metro动态加载内容框架
Win8 Metro动态加载内容框架

html5支持websocket可以连接uppbox,自写的js状态机引擎在调试模式下可以把与c#代码交互过程全部传输出来,还可以传输指令,方便调试。

Win8 Metro动态加载内容框架

xaml+js协议文档,大部分命令都支持写在xaml自动触发或js发送

Win8 Metro动态加载内容框架

配套的app测试平台...没什么用的机会了...