BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
bolt 基本介绍
Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库。迅雷7是首个采用该引擎成功开发的产品,目前迅雷旗下大部分客户端产品都基于该引擎开发,并稳定运行于超过3.5亿台PC上。
BOLT.NET开源项目
介绍
从2012年11月开始,千寻动漫(http://manhuahe.net)团队开始开发千寻漫画盒2.0版本,我们选择了迅雷的BOLT界面引擎开发新版界面。由于我们项目一开始主要使用.NET平台上的C#语言开发,所以直接选择了在.NET平台上使用BOLT引擎开发新版界面。迅雷BOLT SDK里有一个简单版本的dotNetBoltDemo,我们从这个简单的例子出发,在开发过程中按需封装和改进,逐渐形成了比较稳定的一个封装类库。考虑到很多开发者同样需要使用.NET平台开发BOLT界面,本着分享和避免重复发明轮子的精神,我们将BOLT.NET类库项目开源出来,希望大家一起改进它,以提供一个在.NET平台上使用简单、稳定高效、接口优雅的BOLT封装,为在.NET上通过BOLT开发产品界面提供有品质的保证。
源码
BOLT.NET 项目源代码托管在http://boltdotnet.codeplex.com/上,使用Git做版本管理。
Git clone地址:https://git01.codeplex.com/boltdotnet
源码项目工程使用visual studio 2010构建
项目使用BSD开源协议
主要技术
使用.NET平台调用技术(P/Invoke)调用XLUE.dll导出的API注册类和对象给BOLT的Lua环境。
使用Attribute简化类和对象的注册。
使用扩展方法简化Lua 栈元素的读取。
使用泛型类以及扩展方法将Lua的function转成C#的Action和Func,简化代码。
简化UI线程的消息循环,并提供跨线程Invoke方法,让跨线程调用BOLT界面更加方便和友好。
在P/Invoke BOLT的API时,通过UTF8Marshal属性自动对BOLT环境的UTF8字符与.NET环境的UCS编码做转换。
使用说明
下载并安装Git for Windows (http://msysgit.github.io/)
打开Git Bash 命令行界面
使用git命令将源码克隆到本地: git clone https://git01.codeplex.com/boltdotnet
打开HelloBolt.NET.sln解决方案,编译并运行项目。
共有两个工程:
ComicDown.UI.Core,是BOLT的.NET封装的核心类库。
HelloBolt.NET,使用BOLT SDK的HelloBolt7的XAR做的DEMO,通过代码可以看到在.NET里通过ComicDown.UI.Core封装的API使用BOLT更加简单方便。
工程的输出路径:
boltdotnet\HelloBolt.NET\Bin\Debug
boltdotnet\HelloBolt.NET\Bin\Release
界面的BOLT代码:
boltdotnet\HelloBolt.NET\Bin\View
工程使用的是BOLT的dev和pr版Union版本XLUE.dll,分别位于Debug和Release目录下。请自行从迅雷BOLT官方论坛引擎发布版(http://bolt.xunlei.com/bbs/forum.php?mod=forumdisplay&fid=42)下载最新版本XLUE.dll
DEMO介绍
HelloBolt.NET项目,在Program.cs里通过XLBolt单例启动迅雷环境。Classes目录下的Application和MyClass是待注册给BOLT环境的C#类。RegisterClasses目录下的LuaApplication和LuaMyClass分别注册了Application单例对象给BOLT环境,MyClass工厂类给BOLT环境。
具体的代码和使用说明都已经在代码里面有详细注释,请直接通过上一步获取源码并阅读。
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面的更多相关文章
- Android(java)学习笔记262:JNI之工具快速开发步骤
下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...
- Android(java)学习笔记206:JNI之工具快速开发步骤
下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...
- SQL反模式学习笔记1 开篇
什么是“反模式” 反模式是一种试图解决问题的方法,但通常会同时引发别的问题. 反模式分类 (1)逻辑数据库设计反模式 在开始编码之前,需要决定数据库中存储什么信息以及最佳的数据组织方式和内在关联方式. ...
- VSTO 学习笔记(十)Office 2010 Ribbon开发
原文:VSTO 学习笔记(十)Office 2010 Ribbon开发 微软的Office系列办公套件从Office 2007开始首次引入了Ribbon导航菜单模式,其将一系列相关的功能集成在一个个R ...
- mybatis 学习笔记(三):mapper 代理开发 dao 层
mybatis 学习笔记(三):mapper 代理开发 dao 层 优势 通过使用mapper 代理,我们可以不需要去编写具体的实现类(使用 getMapper() 方法自动生成),只需编写接口即可, ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- ROS学习笔记八:基于Qt搭建ROS开发环境
1 前言 本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Q ...
- Django学习笔记(20)——BBS+Blog项目开发(4)Django如何使用Bootstrap
本文学习如何通过Django使用Bootstrap.其实在之前好几个Django项目中已经尝试使用过了Bootstrap,而且都留有学习记录,我已经大概有了一个大的框架,那么本文就从头再走一遍流程,其 ...
- Django学习笔记(18)——BBS+Blog项目开发(2)主体思路及流程
这篇博客主要完成一个BBS+Blog项目,那么主要是模仿博客园的博客思路,使用Django框架进行练习. 准备:项目需求分析 在做一个项目的时候,我们首先做的就是谈清楚项目需求,功能需求,然后才开始写 ...
随机推荐
- 使用copy函数输出容器中的内容
container<type> c; 输出语句为:copy(c.begin(), c.end(), ostream_iterator<type>(cout, " &q ...
- PHP - 用户异常断开连接,脚本强制继续执行,异常退出回调
试想如下情况.如果你的用户正在执行一个需要非常长的执行时间的操作.他点了执行了之后,浏览器就开始蛋疼地转.如果执行5分钟,你猜他会干啥,显然会觉得什么狗屎垃圾站,这么久都不响应,然后就给关了.当然这个 ...
- Linux常用命令----基本文件系统常用命令
1.查看当前工作目录---pwd sunny@sunny-ThinkPad-T450:~$ pwd /home/sunny sunny@sunny-ThinkPad-T450:~$ cd Worksp ...
- struts2配置文件(struts.xml)中相关属性的设置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-/ ...
- Perl 子程序(函数)
1.Perl 子程序(函数)Perl 子程序也就是用户定义的函数.Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读. Perl 子程序可以出现在程序的任何地方,语法 ...
- AssetBundle依赖
[Managing asset dependencies] 一个Asset会依赖其它Asset.可以把一个Asset所依赖的Asset也打包进自己的AssetBundle.可是多个Asset可能依赖同 ...
- 开发 WebAPP 的几个前端框架(不断更新中)
http://mobileangularui.com/ http://ionicframework.com/ http://www.idangero.us/framework7/ (中文文档:http ...
- Spring Data JPA + layui的前台分页插件layPage实现页面的分页
一.后台代码: 1.1 controller层代码 @RequestMapping("/xxxxxx") public String showInformationCode(Str ...
- TCP与UDP与HTTP协议
http:是用于www浏览的一个协议.tcp:是机器之间建立连接用的到的一个协议. 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.R ...
- DBArtist之Oracle入门第1步: 如何安装Oracle 11g
操作系统: Windows 7 数据库 : Oracle 11gR2 第一步: 下载Oracle安装包 Oracle官网: https://www.oracle.com/index.html ...