virtual displaylpc controller是什么 这是什么鬼显卡?

for flash and cocos2dx
Fri, 29 May :02 +0000
http://wordpress.org/?v=4.3.1
如何在lua项目中使用dragonbones
/how-to-use-dragonbones-in-lua/
/how-to-use-dragonbones-in-lua/#comments
Thu, 12 Feb :13 +0000
<![CDATA[由于热更新的原因,现在好多cocos2dx项目都会使用lua/js脚本来开发,这篇讲下如何在cocos2dx- [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[由于热更新的原因,现在好多cocos2dx项目都会使用lua/js脚本来开发,这篇讲下如何在cocos2dx-lua项目中使用DB(dragonbones,龙骨)。
这里假设已经建好了cocos2dx的lua项目,将DB放到了指定目录,并且lua绑定已经做完了。如果以上步骤没有做完,请看。
DB在lua项目中的使用和在C++项目中使用基本一样,这里列下不同点:
事件侦听方式修改
数据类在lua中基本得不到
某些带有void*的接口在lua中不可用
虽然有些API在lua中不可用,但是基本使用上没有大问题。
所有DB的类都映射到db对象中,比如dragonbones::DBCCArmatureNode映射为db.DBCCArmatureNode。
创建DBCCArmatrueNode
下面创建一个"dragonBoy"的示例并播放walk动作,代码很简单,跟C++中使用一样,只是编写方式变了下。
local factory = db.DBCCFactory:getInstance()
local dbnode = factory:buildArmatureNode(&#34;dragonBoy&#34;)
dbnode:getAnimation():gotoAndPlay(&#34;walk&#34;)
addChild(dbnode)
添加事件跟C++中不一样了,在lua中事件被分成了两类:动画事件和帧事件。
其实还有DB还支持声音事件,而且C++中也实现了,只是感觉声音事件没有那么重要,完全可以用帧事件代替,所以就没有提供帧事件的lua接口。
-- @param table event
db.DBCCArmature armature
db.DBCCArmatureNode armatureNode
对应于dragonbones::EventData::EventType
string boneName
仅在帧事件中有效
string animationName
string frameLabel
仅在帧事件中有效
bool isLastAnimation
local function onEvent( event ) end
-- 注册动画事件
armatureNode:registerAnimationEventHandler(onEvent)
-- 注册帧事件
armatureNode:registerFrameEventHandler(onEvent)
Copyright &
LiteFeel. All rights reserved. | ]]>
/how-to-use-dragonbones-in-lua/feed/
如何做dragonbones的lua绑定(Android)
/how-to-do-lua-bindings-for-dragonbones-android/
/how-to-do-lua-bindings-for-dragonbones-android/#comments
Thu, 05 Feb :48 +0000
<![CDATA[这篇写dragonbones的lua绑定之Android部分,不知道怎么在VS(Visual Studio)中 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[这篇写dragonbones的lua绑定之Android部分,不知道怎么在VS(Visual Studio)中绑定的话请看。
有了上篇的基础,这次再做Android就比较简单了。
注意:ndk9b不能编译通过,我这里使用的是ndk9d,其他版面没有测试。
修改 Application.mk
文件路径:
MyLuaGame/frameworks/runtime-src/proj.android/jni/Application.mk
添加预定义宏
APP_CPPFLAGS += -DDRAGON_BONES_ENABLE_LUA=1
这个为可选项,Application.mk为全局设置,如果这里添加了预定义宏,那么模块中就不必再添加了。
修改dragonbones的Android.mk
文件路径:
MyLuaGame/frameworks/cocos2d-x/cocos/editor-support/dragonbones/renderer/cocos2d-x-3.x/android/Android.mk
添加依赖库及预定义宏
LOCAL_C_INCLUDES +=
$(LOCAL_PATH)&#47;..&#47;..&#47;..&#47;..&#47;..&#47;scripting&#47;lua-bindings&#47;manual
$(LOCAL_PATH)&#47;..&#47;..&#47;..&#47;..&#47;..&#47;..&#47;external&#47;lua&#47;tolua
$(LOCAL_PATH)&#47;..&#47;..&#47;..&#47;..&#47;..&#47;..&#47;external&#47;lua&#47;luajit&#47;include
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_lua_static
LOCAL_CFLAGS += -DDRAGON_BONES_ENABLE_LUA=1
完整文件下载(, , ),其他版本的请自行修改。
修改spripting的Android.mk
文件路径:
MyLuaGame/frameworks/cocos2d-x/cocos/scripting/lua-bindings/Android.mk
添加搜索路径及依赖像
LOCAL_SRC_FILES += auto&#47;lua_dragonbones_auto.cpp
LOCAL_C_INCLUDES +=
$(LOCAL_PATH)&#47;..&#47;..&#47;editor-support&#47;dragonbones
$(LOCAL_PATH)&#47;..&#47;..&#47;editor-support&#47;dragonbones&#47;renderer&#47;cocos2d-x-3.x
LOCAL_CFLAGS += -DDRAGON_BONES_ENABLE_LUA=1
LOCAL_WHOLE_STATIC_LIBRARIES += dragonbones_static
$(call import-module,editor-support&#47;dragonbones&#47;renderer&#47;cocos2d-x-3.x&#47;android)
完整文件下载(, , ),其他版本的请自行修改。
更新记录:
[] dragonbones的Android.mk中添加liblua的搜索路径
[] 增加cocos2dx3.3,cocos2dx3.4相关文件下载路径
Copyright &
LiteFeel. All rights reserved. | ]]>
/how-to-do-lua-bindings-for-dragonbones-android/feed/
用markdown语法写wp文章
/writing-wordpress-posts-in-markdown/
/writing-wordpress-posts-in-markdown/#comments
Sat, 29 Nov :57 +0000
<![CDATA[markdown语法的简洁干净,让作者从复杂的格式信息中解脱出来,更专注于内容。markdown只有不多的规则 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[语法的简洁干净,让作者从复杂的格式信息中解脱出来,更专注于内容。markdown只有不多的规则,可以直接使用文本来编写,如果偶尔需要跟复杂的格式,可以直接嵌入html代码就OK了。
wordpress(wp)独立博客本身不支持markdown语法,需要使用插件来支持,之前一直使用wp-markdown这个插件,可是该插件对支持不是很好,而且会将内容先转为html再保存到数据库,等下次编辑的时候会再将html转化为markdown,但是html到markdown的转化不友好。
前几天发现了,这是一个效率很高而且对GFM支持很友好的php库,然后就搜搜看有没有wp的版本,还真让搜到了这个插件,该插件直接保存markdown内容到数据库,访问的时候再将markdown内容转化为html。
虽说这个插件保留了完整的markdown内容,但是对代码高亮插件支持不友好,对于程序员来讲很伤啊,今天花了点时间让它支持了,该插件使用的库,该库很小,支持基本的代码高亮,已经够用了,后续如果想换其它代码高亮库的时候再做其它库的支持。
独乐乐不如众乐乐,已经将修改过的wp-markdown托管在github上了,请移步到查看。
Copyright &
LiteFeel. All rights reserved. | ]]>
/writing-wordpress-posts-in-markdown/feed/
免费获得texturepacker许可证
/free-license-for-texturepacker/
/free-license-for-texturepacker/#comments
Sat, 15 Nov :16 +0000
<![CDATA[TexturePackerPro是最好我用过的最好用的纹理打包工具,支持多种图片格式,拥有多种输出格式和配置, [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[TexturePackerPro是最好我用过的最好用的纹理打包工具,支持多种图片格式,拥有多种输出格式和配置,对当前市面上主流的引擎及框架都支持的很好,还可以自定义输出格式。相信这么好的工具大家都使用或听到过了。
该软件自带有免费许可供新手试用,不过当使用高级特特性时会故意将个别纹理替换为红色。当个用户每年¥258.99的价格虽然不算太贵,但是有免费的不用白不用。网上也有各种破解版本,能在作者允许的情况下免费使用才是最好(况且天天破解也是麻烦的),那么作者就提供了一条完整免费使用一年的路径,虽然有条件限制,但是很容易做到。
免费一年许可申请条件:
拥有一个关于游戏、软件、web开发或引用开发的博客
该博客至少有5篇文章,并且没有荒废6个月以上
Facebook, Twitter, Tumblr
Weibo 这些不算,除非你有100个粉丝
如果你的博客上能有关于TexturePackerPro/PhysicsEditor的文章就最好了(该条为可选项)
顺便说下作者的TexturePackerPro和PhysicsEditor这两个工具都可以拥有一年免费许可的。
如果上面的条件都符合,那么只需到这里简单填个表单,稍等2-3个小时,作者就会将TexturePackerPor免费许可(license)和PhysicsEditor的key通过email发来了。
TexturePackerPro 和 PhysicsEditor 是的两个很好的工具,并且都支持Windows/Linux/Mac OSX.
TexturePackerPro 用于纹理打包。
PhysicsEditor 用于物理设置碰撞区域。
Copyright &
LiteFeel. All rights reserved. | ]]>
/free-license-for-texturepacker/feed/
如何做dragonbones的lua绑定(VisualStudio)
/how-to-do-lua-bindings-for-dragonbones-vs/
/how-to-do-lua-bindings-for-dragonbones-vs/#comments
Thu, 16 Oct :46 +0000
<![CDATA[最近好多同学在QQ群里问怎么在lua项目中使用DB(DrgonBones,龙骨),为了帮助更多的人,同时也好让 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[最近好多同学在QQ群里问怎么在lua项目中使用DB(DrgonBones,龙骨),为了帮助更多的人,同时也好让更多的人跟容易使用DB,这里详细记录coco2dx-3.2版本对应DB的lua绑定。
首先要说明下,本文章对应的cocos2dx-3.2版本,其他cocos2dx-3.x版本跟3.2版本类似。
这里假设自己使用cocos命令行创建的lua项目,而且没有修改过目录结构,如果修改了请自行查找具体文件所在目录。
第一个假设,假设你已经知道如何配置cocos2dx-3.x的lua绑定,如果不知道的请移步查看README文件。
第二个假设,假设你已经使用cocos2dx-3.2创建了lua项目,名字为MyLuaGame,并且没有修改过里面的路径。
从上下载项目,将dragonbones文件夹移动到MyLuaGame/frameworks/cocos2d-x/cocos/editor-support下。目录结构类似于这样:
在vs(Visual Studio)中打开MyLuaGame项目。
右击解决方案 =& 添加 =& 现有项目... ,选择MyLuaGame/frameworks/cocos2d-x/cocos/editor-support/dragonbones/renderer/cocos2d-x-3.x/proj.win32/libDragonbones.vcxproj。
添加预处理宏
对libDragonbones和liblua库添加预处理宏DRAGON_BONES_ENABLE_LUA=1。
右击 libDragonbones =& 属性 =& 配置属性 =& C/C++ =& 预处理器 =& 预处理定义 ,点击值后右边会有个下拉框,选择编辑,添加DRAGON_BONES_ENABLE_LUA=1并确认。
这里是libDragonbones的预处理宏,liblua的也类似。
还有一种简便的方式,不需要去项目配置预定义宏,修改MyLuaGame/frameworks/cocos2d-x/cocos/editor-support/dragonbones/renderer/cocos2d-x-3.x/dbccMacro.h文件,
将#define DRAGON_BONES_ENABLE_LUA 0中的0修改为1。
不过不建议直接修改db的源文件,因为将来升级db的时候还需要再次修改这里。
向liblua库中添加两条搜索路径
右击 liblua =& 属性 =& 配置属性 =& 常规 =& 附加包含目录,点击值后右边会有个下拉框,选择编辑,添加下面的搜索路径并确认。
$(EngineRoot)cocoseditor-supportdragonbones
$(EngineRoot)cocoseditor-supportdragonbonesrenderercocos2d-x-3.x
为MyLuaGame添加依赖项
右键MyLuaGame =& 生成依赖项 =& 项目依赖项...,勾选libDragonbones。
右键MyLuaGame =& 属性 =& 通用属性 =& 添加新引用 =& 勾选 libDragonbones。
修改conversions.yaml
文件路径:MyLuaGame/frameworks/cocos2d-x/tools/bindings-generator/targets/lua/conversions.yaml
ns_map: 下添加 "dragonBones::": "db."
to_native: 下添加:
LUA_FUNCTION : &#34;${out_value} =
toluafix_ref_function(tolua_S,${arg_idx},0);ok &= ${out_value} != 0;&#34;
完整文件下载(, , ),其他版本的请自行修改。
添加dragonbones.ini
文件路径:MyLuaGame/frameworks/cocos2d-x/tools/tolua/dragonbones.ini
复制cocos2dx.ini并命名为dragonbones.ini。
参照cocos2dx-3.2的dragonbones.ini修改。
修改第一行 [cocos2d-x] =& [dragonbones]
修改 prefix = cocos2dx =& prefix = dragonbones
修改 target_namespace = cc =& target_namespace = db
将下列路径追加到cocos_headers,空格分隔,不能换行。
-I%(cocosdir)s&#47;cocos&#47;editor-support&#47;dragonbones
-I%(cocosdir)s&#47;cocos&#47;editor-support&#47;dragonbones&#47;renderer&#47;cocos2d-x-3.x
-I%(cocosdir)s&#47;external&#47;lua&#47;luajit&#47;include
-I%(cocosdir)s&#47;cocos&#47;scripting&#47;lua-bindings&#47;manual
-I%(cocosdir)s&#47;external&#47;lua&#47;tolua
将下列头文件设置到headers,直接覆盖原有的就好,依然空格分隔,不能换行。
%(cocosdir)s&#47;cocos&#47;editor-support&#47;dragonbones&#47;renderer&#47;cocos2d-x-3.x&#47;DBCCRenderHeaders.h
%(cocosdir)s&#47;cocos&#47;editor-support&#47;dragonbones&#47;DragonBonesHeaders.h
将下列类添加到classess,自己覆盖原有的就好,依然空格分隔,不能换行。可以添加更多你自己需要的类。
DBCCArmature DBCCArmatureNode Armature Animation AnimationState DBCCFactory BaseFactory Slot DBCCSlot WorldClock IAnimatable
设置skip为下面的,注意格式,可以自行修改。
skip = Bone::&#91;getSlots getChildArmature&#93;,
Armature::&#91;getSlots getBones getBoundingBox&#93;,
Animation::&#91;getAnimationDataList setAnimationDataList getAnimationData addLayer setActive&#93;,
Slot::&#91;setDisplayList getDisplayList getBoundingBox&#93;,
BaseFactory::&#91;getTextureAtlasMap getDragonBonesDataMap&#93;,
WorldClock::&#91;add remove contains&#93;
设置 abstract_classes 为下面的,直接覆盖就好。
abstract_classes = BaseFactory Slot Armature IAnimatable BaseFactory Slot Armature IAnimatable
完整文件下载(, , ),其他版本的请自行修改。
修改genbindings.py
文件路径:MyLuaGame/frameworks/cocos2d-x/tools/tolua/genbindings.py
搜索'cocos2dx.ini' : ('cocos2d-x', 'lua_cocos2dx_auto'),
在这一段中添加'dragonbones.ini' : ('dragonbones', 'lua_dragonbones_auto'),.
完整代码段为:
cmd_args = {&#39;cocos2dx.ini&#39; : (&#39;cocos2d-x&#39;, &#39;lua_cocos2dx_auto&#39;),
&#39;cocos2dx_extension.ini&#39; : (&#39;cocos2dx_extension&#39;, &#39;lua_cocos2dx_extension_auto&#39;),
&#39;cocos2dx_ui.ini&#39; : (&#39;cocos2dx_ui&#39;, &#39;lua_cocos2dx_ui_auto&#39;),
&#39;cocos2dx_studio.ini&#39; : (&#39;cocos2dx_studio&#39;, &#39;lua_cocos2dx_studio_auto&#39;),
&#39;cocos2dx_spine.ini&#39; : (&#39;cocos2dx_spine&#39;, &#39;lua_cocos2dx_spine_auto&#39;),
&#39;cocos2dx_physics.ini&#39; : (&#39;cocos2dx_physics&#39;, &#39;lua_cocos2dx_physics_auto&#39;),
&#39;cocos2dx_experimental_video.ini&#39; : (&#39;cocos2dx_experimental_video&#39;, &#39;lua_cocos2dx_experimental_video_auto&#39;),
&#39;cocos2dx_experimental.ini&#39; : (&#39;cocos2dx_experimental&#39;, &#39;lua_cocos2dx_experimental_auto&#39;),
&#39;cocos2dx_controller.ini&#39; : (&#39;cocos2dx_controller&#39;, &#39;lua_cocos2dx_controller_auto&#39;),
&#39;dragonbones.ini&#39; : (&#39;dragonbones&#39;, &#39;lua_dragonbones_auto&#39;),
target = &#39;lua&#39;
完整文件下载(, , ),其他版本的请自行修改。
生成lua绑定
由于cocos2dx-3.2版本的lua绑定缺少dos2unix.exe文件,所以需要从,并放到
MyLuaGame/frameworks/cocos2d-x/tools/bindings-generator/tools/win32 目录下。
在命令行中运行MyLuaGame/frameworks/cocos2d-x/tools/tolua/genbindings.py,不出意外就一次生成成功了。
如果你没有配置好或者没有成功生成绑定文件,可以自己下载完整的绑定文件,其他版本的请自行修改。
lua_dragonbones_auto.hpp(, , )
lua_dragonbones_auto.cpp(, , )
注册libDragonbones到liblua
右键libLua/auto =& 添加 =& 现有项.. ,选择 MyLuaGame/frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto/ 目录下的lua_dragonbones_auto.cpp和lua_dragonbones_auto.hpp文件。
向CCLuaStack.cpp中添加#include "lua_dragonbones_auto.hpp"头。
向bool LuaStack::init(void)函数中添加register_all_dragonbones(_state);。
完整文件下载(, , ),其他版本的请自行修改。
到这里就全部结束了,项目应该能编译通过并运行,之后就用lua写代码吧。
如果MyLuaGame的C++部分也使用了dragonbones,那么也需要在为MyLuaGame项目添加搜索路径及预定义宏。
接下来可以看看:
更新记录:
[] 增加了CCLuaStack.cpp及cocos2dx-3.3/3.4的链接
[] 增加了添加搜索路径的方法
[] 修改dragonbones/renderer下为cocos2d-x-3.x
[] 增加了cocos2dx-3.2绑定好的hpp cpp文件
[] 增加了cocos2dx-3.x的lua绑定链接
[] 增加了dragonbones.ini的添加方法
Copyright &
LiteFeel. All rights reserved. | ]]>
/how-to-do-lua-bindings-for-dragonbones-vs/feed/
cocos2dx跨平台文件路径
/file-path-in-cross-platform/
/file-path-in-cross-platform/#comments
Thu, 09 Oct :43 +0000
<![CDATA[最近将我们游戏打包了 Android 版本,在加载 cocostudio UI 时报“文件找不到”的错误,经过 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[最近将我们游戏打包了 Android 版本,在加载 cocostudio UI 时报“文件找不到”的错误,经过检查后确定该路径中的文件存在,而且同样的代码在 Windowns 及 IOS 平台下都没有问题。
而且只是找不到Andorid中 cocostudio UI 中使用的某些plist文件,而不是所有文件。
经过仔细比较后发现所有找不到的文件都有一个共同的特点:
路径中含有../(上级目录的引用)。
所以猜想,可能Android平台中不支持含有../的路径,然后我手动调整了部分路径到不含../的路径后,没有再出现文件找不到的错误。
这样更加验证了我的猜想,然后去看了cocos2dx读取文件的代码,发现Android平台通过AAssetManager_open读取apk中资源(assets/目录中的文件),而该接口操作JNI传递过来的android.content.res.AssetManager实例来读取文件,继续找的Java端的AssetManager的源码,发现调用了native的openAsset,再继续就找不到openAsset的源码了。
虽然在源码中没有找到为什么路径中不支持../,不过找到了Java的代理类AssetManager,使用Java代码来验证的我猜想:
&#47;&#47; activity 就是Android程序的Activity实例
AssetManager assetManager = activity.getAssets();
assetManager.open(&#34;bang.png&#34;);
Log.d(&#34;TestAssetManager&#34;, &#34;can open bang.png&#34;)
assetManager.open(&#34;test&#47;..&#47;bang.png&#34;);
Log.d(&#34;TestAssetManager&#34;, &#34;test&#47;..&#47;bang.png&#34;)
} catch (IOException e) {
&#47;&#47; TODO Auto-generated catch block
e.printStackTrace();
以上代码运行后报错说找不到路径test/../bang.png,也就得出结论:AssetManager不支持../路径。
找到问题就原因,解决起来就比较简单了,只需将文件路径进行规范化(normalize)就可以了,而出现问题的平台只有Android,而windows、IOS及Mac下没有问题,那么只需要将Android平台下进行路径规范化就OK了。
至于为什么只有Android不支持../路径,是因为Android的apk应用被安装后不会将资源文件(assets目录)从apk中解压到文件目录,而依然存在apk的zip文件中,每次都需要通过AssetManager来代理读取,google的开发人员可能认为所有人都会(或就应该)使用规范化的路径来访问资源。
最近比较喜欢开源社区,喜欢贡献代码,所以已经提交了pr(Pull requests),不过cocos2dx的人好像不打算合并该pr了该pr已经被cocos2dx合并了,因为他们想要做一个新的文件系统来支持更好的文件操作。不论c2dx最终会如何发展,至少现在该pr还是有用的,所以这里也放上该pr的地址:
Copyright &
LiteFeel. All rights reserved. | ]]>
/file-path-in-cross-platform/feed/
使用linode VPS
/linode-vps/
/linode-vps/#comments
Sat, 13 Sep :47 +0000
<![CDATA[由于之前便宜的美国VPS速度太慢,稳定性又不好,终于从这个月开始换用了传说中的Linode VPS。经过这些天 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[由于之前便宜的美国VPS速度太慢,稳定性又不好,终于从这个月开始换用了传说中的。经过这些天的使用,发现速度和稳定性都提升了很多。如果有VPS需求的,建议使用,而且价格也没有那么贵了,现在跟别人合租每月10$美刀的套餐,性价比还是可以接受的。
如果有朋友使用我的推荐码购买,在这里就万分感谢。
我的推荐码:
在这几天的使用中,我发现VPS被人攻击的比较多,在之前的VPS上没有发现有人暴力破解密码,是因为没有做这些防护,估计早已成了别人的肉鸡了,怪不得每个月都是300G-500G的流量使用呢。
这些天收集的ip大部分都是国内黑客使用暴力猜测我的用户名密码(不仅仅是root账号),幸好我有做一点安全防护,已经收集了100+的ip了。从这些ip的分布情况来看,有可能是使用了分布式攻击方式,也就是有人控制全国各地的不同机器来攻击。
其实对于仅仅放个博客的Linode用户来说,最简单的方式是禁止任何人登陆,密匙也不能登陆(我一直没有测试好windowns用户怎么用密匙登陆VPS)。当想要登陆到VPS的时候从后台启动Rescue模式,然后再登陆到VPS。
这里公布下我收集的攻击ip列表,该列表会不定期更新:
最后再发下我的的推荐码:
Copyright &
LiteFeel. All rights reserved. | ]]>
/linode-vps/feed/
/c-plus-plus-polymorphism/
/c-plus-plus-polymorphism/#comments
Thu, 01 May :39 +0000
<![CDATA[C++是真正的的OOP(面向对象程序)语言,语言本身支持多态(Polymorphism)特性。 所谓多态特性就 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[C++是真正的的OOP(面向对象程序)语言,语言本身支持多态(Polymorphism)特性。
所谓多态特性就是通过调用父类类型对象的函数可以调用到子类的同名函数。
例如:A类有print方法,B类继承A类,通过调用a调用print可以调用到B类的print函数。 当然对于像AS3/Java这样的OOP语言,对于多态没有什么限制,但是对于C++还是稍有些限制的。
C++虚函数用法
在声明时添加virtual修饰符,函数将变成虚函数(Virtual Function),如果在虚函数结尾添加添加=0将变成纯虚函数(Pure Virtual Function),纯虚函数不能有实现,只能在子类中实现。
&#47;&#47; 虚函数
virtual void foo();
&#47;&#47; 纯虚函数
virtual void foo() = 0;
C++多态的必要条件:
调用者必须是指针
调用者的实际类型必须是指针的子类
要调用的函数必须在指针类型或其基类的类型中有被声明为虚函数
#include &iostream&
void foo() { cout && &#34;A::foo()n&#34;; }
class B : public A
void foo() { cout && &#34;B::foo()n&#34;; }
class C : public B
virtual void foo() { cout && &#34;C::foo()n&#34;; }
class D : public C
void foo() { cout && &#34;D::foo()n&#34;; }
int main()
&#47;&#47; 不是多态,调用者不是指针
&#47;&#47; D::foo()
B* pb = &d;
&#47;&#47; 不是多态,B类型及基类的foo函数没有虚函数
pb-&foo(); &#47;&#47; B::foo()
D* pd = &d;
&#47;&#47; 不是多态,调用者指针类型与实际类型相同
pd-&foo(); &#47;&#47; D::foo()
C* pc = &d;
&#47;&#47; 是多态
pc-&foo(); &#47;&#47; D::foo()
system(&#34;PAUSE&#34;);
Copyright &
LiteFeel. All rights reserved. | ]]>
/c-plus-plus-polymorphism/feed/
sublimetext常用快捷键
/sublimetext-shortcuts/
/sublimetext-shortcuts/#comments
Fri, 25 Apr :53 +0000
<![CDATA[使用sublime text有段时间了,从2用到3后就一直用了sublime text 3了,因为3比2多了好 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[使用sublime text有段时间了,从2用到3后就一直用了sublime text 3了,因为3比2多了好多功能,也更快速。
这里记录下自己常用的一些快捷键。
选中下一个与当前选区一致的内容。非单词也一样选择
ctrl+k,ctrl+d
放弃当前选中区,并调到下一个选中区。与ctrl+d配合过滤掉不要的选择
ctrl+delete
向后删除一个单词
ctrl+backspace
向前删除一个单词
ctrl+shif+k
删除光标所在的行
ctrl+k,ctrl+backspace
向前删除一行
ctrl+k,ctrl+k
向后删除一行
复制所有选区
剪切所有选区
复制光标所在行(没有选区)
剪切光标所在行(没有选区)
ctrl+shift+d
复制当前行到下一行,同时光标也到下一行的当前位置
移动光标到前一个单词
ctrl+right
移动光标到后一个单词
移动光标到前一个子单词
移动光标到后一个子单词
ctrl+shift+left
向前选择一个单词
ctrl+shift+right
向后选择一个单词
alt+shift+lef
向前选择一个子单词
alt+shift+right
向后选择一个子单词
当前行或选中的行向前缩进一个tab
当前行或选中的行向后移动一个tab
选中多行时同ctrl+[,否则添加一个tab
选中多行时同ctrl+],否则添加一个tab
切换大小写
ctrl+k,ctrl+u
转换所选为大写
ctrl+k,ctrl+l
转换所选为小写
交换字符/单词
交互光标两边的字母或交换两个单词
alt+shift+-
因为我用Windows系统,所以只看了win的快捷键。win/mac/linux大部分快捷键都一样的。
当然更多的快捷键可以查看默认快捷键配置招到,查看方法:
Preferences菜单 -& Key Bindings - Default菜单项。
最后记录下sublimetext中的正则搜索,与通常的正则表达式不太一样,而是使用Boost语法的正则。
Copyright &
LiteFeel. All rights reserved. | ]]>
/sublimetext-shortcuts/feed/
塔防海贼王
/tafanghaizeiwang/
/tafanghaizeiwang/#comments
Thu, 06 Mar :54 +0000
<![CDATA[我们的第一款手机游戏《塔防海贼王》已经在各个平台全面开放了,今天放到博客上纪念下,也打个广告,我们有跟不同国内 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[我们的第一款手机游戏《塔防海贼王》已经在各个平台全面开放了,今天放到博客上纪念下,也打个广告,我们有跟不同国内手游平台合作,只需在需要的平台上搜索《塔防海贼王》就能找到。
App Store中名字改为《塔防大作战》,其他平台都不变。
1&#46; 还原原著地图路线
波澜壮阔的地图,生动形象的建筑,完美还原海贼王原著的故事走向,带着我们最初的回忆去寻找One-Piece !
2&#46; 各种强力伙伴云集
在塔防海贼王里,你可以在酒馆中招募到各类海贼王里的名人,能与传奇角色成为伙伴。海军三大将,七武海,CP9,四皇之一的香克斯,乃至少年时代的草帽海贼团,都可以招募成为伙伴!
3&#46; 绚丽技能组合更加给力
召集来的伙伴可是个个身怀绝技,青稚的冰封时刻,罗的屠宰场,赤犬的流星火山,不仅招式炫目华丽,还能使塔防推图更为轻松!
4&#46; 船魂、装备和宝石系统丰富
游戏中有着各色各样的辅助系统,船魂不仅霸气,而且还能在PVP中增加全体伙伴的属性,通过合成同级别的船魂可以提升更多属性,游戏里的装备与海贼王里的装备交相呼应,娜美的天候棒,索隆的雪走刀和三代鬼彻……这些神器可以大幅提升角色的属性,此外,还能通过强化和升星进一步提升品质!
5&#46; 阵营战,竞技场多人PK,看谁的海贼团最强大
找齐了伙伴,收齐了装备,那还不来竞技场和阵营战与其他玩家真刀真枪对战一回,在相互切磋中,了解到自己队伍的优劣,此外,还能从阵营战和竞技场中获得丰厚的奖励
官网地址:
各个平台均有下载,请搜索《塔防海贼王》,以混服模式运行,不同平台也能相见。 注意APP Store的名字为《塔防大作战》
Copyright &
LiteFeel. All rights reserved. | ]]>
/tafanghaizeiwang/feed/
Visual Studio 2013 Professional Key
/visual-studio-2013-professional-key/
/visual-studio-2013-professional-key/#comments
Sat, 01 Mar :45 +0000
<![CDATA[今天发现家里的VS2013专业版过期了,于是google百度一顿大搜,多数key都不能用,不过还是找到一个ke [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[今天发现家里的VS2013专业版过期了,于是google百度一顿大搜,多数key都不能用,不过还是找到一个key可以使用的。
Visual Studio 2013 Professional Key:
XDM3T-W3T3V-MGJWK-8BFVD-GVPKY
这里感觉myfather103分享。
http://blog.csdn.net/myfather103/article/details/
Copyright &
LiteFeel. All rights reserved. | ]]>
/visual-studio-2013-professional-key/feed/
Multiple dex files define xxxxx
/multiple-dex-files-define-xxxxx/
/multiple-dex-files-define-xxxxx/#comments
Mon, 17 Feb :43 +0000
<![CDATA[接入360SDK的时候总是报错不同通过编译,之前就遇到过,今天又遇到一次,这里记录下来,以防日后忘记了。 报错 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[接入360SDK的时候总是报错不同通过编译,之前就遇到过,今天又遇到一次,这里记录下来,以防日后忘记了。
报错信息如下。
[ 22:05:51 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/annotation/SuppressL [ 22:05:51 - tdhaizei-qh360] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/annotation/SuppressL
上面的意思是说,android.annotation.SuppressLint类存在不同版本的定义。
APP或其包含的类库中对同一个类(完全限定名相同)有不同的定义。
上面的android.annotation.SuppressLint存在于annotations.jar包中。
下面两个jar最容易被重复包含。
{androidSDK}&#47;tools&#47;support&#47;annotations.jar
{androidSDK}&#47;extras&#47;android&#47;support&#47;v4&#47;android-support-v4.jar
去除重复的jar引用及libs中同名的jar就OK了。
在不同的类库中导入相同的jar:
使用引用导入同一个jar
将相同的jar复制到不同类库的libs目录中
Copyright &
LiteFeel. All rights reserved. | ]]>
/multiple-dex-files-define-xxxxx/feed/
Sublime-QuickGotoAnything
/sublime-quickgotoanything/
/sublime-quickgotoanything/#comments
Wed, 22 Jan :59 +0000
<![CDATA[QuickGotoAnything是一个轻量级的sublime text插件,同时支持SublimeText2 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[QuickGotoAnything是一个轻量级的sublime text插件,同时支持SublimeText2/3及Windows/Linux/MacOSX,该插件扩展了sublime text默认的goto anything,能够将选中的或当前光标所在的字符串放到 goto anything 面板中,当然在复制字符串的时候也做了一些过滤。
要更好的使用QuickGotoAnything,请先了解sublime默认的,QuickGotoAnything 将变量和函数分别对应于#和@。
Sublime Text 2/3
Windows/Linux/MacOSX
通过安装:
【Ctrl+Shift+P】快捷键
【Package Control: install Package】
输入QuickGotoAnything,点击QuickGotoAnything项
等待安装完成即可使
将光标放在想要快速跳转的源字符串中或选中该字符串,按下相应的快捷键,源字符串将自动放到 goto anything 面板,跳到第一个搜索到的位置并高亮显示跳转到的目标字符串。
为防止误操作,对源字符串做了一些过滤处理。符合规则的源字符串才会被放到 goto anything 面板。
变量名规则:^[a-zA-Z_]+[a-zA-Z0-9_]*$
函数名规则:^[a-zA-Z_]+[a-zA-Z0-9_]*$
文件规则:^[ !#-)+-9;=@-{}~]+$
空格和ASCII可见字符(不含:*?"&&|)
快速转到变量:Ctrl+;(Windows/Linux) Super+;(OSX)
快速转到方法:Ctrl+R(Windows/Linux) Super+R(OSX)
快速转到文件:Ctrl+P(Windows/Linux) Super+P(OSX)
Copyright &
LiteFeel. All rights reserved. | ]]>
/sublime-quickgotoanything/feed/
解决cocos2dx不能在win8运行
/solve-cocos2dx-donot-run-in-win8/
/solve-cocos2dx-donot-run-in-win8/#comments
Thu, 16 Jan :22 +0000
<![CDATA[cocos2dx本身是跨平台的,但是由于升级win8.1后有些显卡驱动不支持,而报错说OpenGL的问题,其实 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[cocos2dx本身是跨平台的,但是由于升级win8.1后有些显卡驱动不支持,而报错说OpenGL的问题,其实重新安装显卡驱动就能解决。这里记录下遇到的问题及解决方法。
前段时间安装了win8.1操作系统并安装了Visual Studio 2013,在运行cocos2dx3alpha预览版的HelloCpp程序的时候一直报错:
GLFWError #65544 Happen, WGL: Failed to find a suitable pixel format
0x00F7A593 处的第一机会异常(在 HelloCpp.exe 中): 0xC0000005: 读取位置 0x 时发生访问冲突。
0x00F7A593 处有未经处理的异常(在 HelloCpp.exe 中): 0xC0000005: 读取位置 0x 时发生访问冲突。
并且调试发现glfwCreateWindow返回null,经过google后发现是OpenGL版本比较小,这里cocos2dx还有个问题,openGL版本检查在后面,其实是运行不到版本检查的代码的,解决这个问题只需要更新显卡驱动,使得OpenGl版本不小于1.5就可以了。
查看OpenGL版本
window没有自带工具可以查看OpenGL版本的,可以使用OpenGL Extensions Viewer这个工具来查看,支持OSX/Windows/IOS/Android。请到下载。 我的查看后竟然是1.0版本。
更新显卡驱动
win8.1更新显卡驱动不太容易,在我机器上不论怎么安装都一直是微软自己的驱动。在设备管理器里卸载显卡驱动后重启,又会被自动安装微软自己的显卡驱动。网上说去安全模式卸载,可是还是不管用。最后搜到一篇文章用工具卸载,并重新手动安装显卡驱动,成功了。
提示:最好去安全模式卸载并禁用win8.1的自动更新显卡驱动。
卸载工具:DDU(Display Driver Uninstaller),请到下载。
卸载教程:win8.1更新显卡驱动教程请到查看。
这里的问题主要是OpenGL版本太低导致的,更cocos2dx版本及操作系统没有关系,只是win8.1有更多机器会出现显卡驱动兼容性问题。
等显卡驱动更新完成后就能正常运行cocos2dx的HelloCpp程序了。
如果还是不能运行,查看OpenGL版本小于1.5,那就是机器台老了,换机器吧。
Copyright &
LiteFeel. All rights reserved. | ]]>
/solve-cocos2dx-donot-run-in-win8/feed/
Sublime-ClassName
/sublime-classname/
/sublime-classname/#comments
Mon, 30 Dec :45 +0000
<![CDATA[Sublime-ClassName是一个快速复制完全完全类名及包名到剪切板的sublime text插件,同时 [&#8230;]Copyright &
LiteFeel. All rights reserved. | ]]>
<![CDATA[Sublime-ClassName是一个快速复制完全完全类名及包名到剪切板的sublime text插件,同时支持SublimeText2/3及Windows/Linux/MacOSX。这个插件是在写lua的用的,起初放到sublime上没有想到会有其他人用,前几天竟然有人在github上贡献了代码,并且还是写PHP的,真心激动了一番,这里写在这里推广下,让更多的人能够使用到。
Sublime Text 2/3
Windows/Linux/MacOSX
通过安装:
【Ctrl+Shift+P】快捷键
【Package Control: install Package】
输入ClassName,点击ClassName项
重新启动Sublime Text
复制完全类名到剪切板:使用Ctrl+Alt+C快捷键复制当前文件的完全类名到剪切板,也可以使用在右键菜单或侧边栏右键菜单复制。
复制包路径到剪切板:使用右键菜单活侧边栏右键菜单进行复制。
&#47;&#47; 设置完全类名的前缀,默认为空
&#34;classname_prefix&#34;: &#34;&#34;,
&#47;&#47; 设置完全类名及包路径的分隔符,默认为 &#39;.&#39;, PHP可设置为&#39;&#47;&#39;
&#34;namespace_separator&#34;: &#34;.&#34;,
&#47;&#47; 设置完全类名的后缀,默认为空
&#34;classname_suffix&#34;: &#34;&#34;
注意:如果需要修改默认配置,修改User配置而不要修改默认配置,因为版本更新的时候对默认配置的修改将丢失。
用户配置修改请选择菜单:“Preferences->Package Settings->ClassName->Settings - User”
如何判断完全类名?
目标文件到侧边栏文件夹的相对位置,去除扩展名,名称分隔符代替目录分隔符便的完全类名。
如果判断包路径?
完全类名去除文件名便是包路径。
Copyright &
LiteFeel. All rights reserved. | ]]>
/sublime-classname/feed/}

我要回帖

更多关于 lpc controller是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信