- 博客(268)
- 资源 (26)
- 收藏
- 关注
转载 CDockablePane上添加的按钮无效,不可用
今天突然发现了一个问题, 就是在这种DockablePane中添加CButton对象时, 竟然这些按钮都是不可用的, 为此跟了许多的代码来搞定这个问题. 当然了, 我的解决方法很土很恶心, 完全是治标不治本的, 应付一下需求而已…一. 先说原因 1. 首先说下类的结构: 继承关系是CDockablePane –> CBasePane –> CWnd 2. 再说说原因 (1). 在CBaseP
2016-11-16 22:25:59
1946
1
转载 初谈网络编程协议
对于初涉网络编程的开发人员来说,在通信协议的设计上一般会有所困惑。一般的网络编程书籍上也较少涉及这方面的内容。估计是觉得太简单了。这块确实是不难,但如果不了解,又很容易出篓子或者绕弯路。下面我就来谈谈基于TCP/UDP的协议设计。 1、基于TCP的协议设计 TCP是基于流的协议。但大部分网络应用一般会有个更小的处理单元,我们称之为帧(FRAME)。
2016-10-12 15:24:36
715
转载 lua内存检测
由于目前正在负责的项目是一个二次开发项目,而且留给我们的代码质量实在让人无力吐槽,所以遇到了不少大大小小的坑,好在慢慢都淌过去了。最近就遇到了一个内存泄漏的问题,泄漏发生在lua里,项目代码里以前的开发团队留下了检测泄漏的代码,但也仅限于此。由于代码量庞大,所以想从逻辑上梳理清楚哪里的引用没干掉导致了内存泄漏几乎就是大海捞针。好在解决的过程比较顺利,这篇文章就来谈一谈Lua中如何解决内存泄漏的问题。
2016-10-08 20:54:53
2470
原创 cocos2d opengl的一下知识总结一
1:矩阵变换case Projection::_3D: { float zeye = this->getZEye(); Mat4 matrixPerspective, matrixLookup; loadIdentityMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION
2016-07-08 15:26:02
2460
原创 cocos2d--WebSocket分析
WebSocket初始化之后,就可以send了,创建一个新的线程并且循环udpate,线程函数循环onSubThreadLoop,update发送消息给Delegate线程函数循环onSubThreadLoop 判断是否要destory或者触发拿发送的数据int WebSocket::onSubThreadLoop(){ if (_readyState == State::CLOSED |
2016-06-15 15:20:49
4108
原创 cocos2d理解--SpriteBatchNode和TextureAtlas
1:TextureAtlas头文件:GLushort* _indices; //顶点index GLuint _VAOname; GLuint _buffersVBO[2]; //0: vertex 1: indices bool _dirty; //indicates
2016-06-14 23:48:09
2135
原创 碰到的一个编码问题
今天看到一个utf-8,utf-16,utf-32之间转换的程序ConvertUTF,于是拿来玩玩,于是就有了这篇文章。 照搬cocos2d里面的ConvertUTF到我的项目。 /** * std::u16string utf16; * bool ret = StringUtils::UTF8ToUTF16("你好hello", utf16); *
2016-06-12 21:26:12
3408
原创 cocos2d热更新代码分析
cocos2d热更新代码分析#include "AssetsManagerEx.h"#include "CCEventListenerAssetsManagerEx.h"#include "deprecated/CCString.h"#include "base/CCDirector.h"#include <curl/curl.h>#include <curl/easy.h>#includ
2016-05-15 00:39:29
3395
转载 【Lua】windows下安装和使用LuaJIT步骤
1.准备1) 下载LuaJIT源代码2) 确保你的机器上安装了visual studio2.编译1) 打开visual studio,依次打开 “工具” >> “visual studio 命令提示”窗口2) 在命令窗口输入“cd /d \src”切到源代码目录下(是你下载的LuaJIT源代码所在的路径);再输入命令“msvcbuild”开始编译。如
2016-05-11 10:38:16
10986
2
原创 记录本地搭建svn的一些问题
记录本地搭建svn的一些问题1: showlog的时候碰到了there has been a problem contacting the server。 解决办法:参考http://stackoverflow.com/questions/27362843/subversion-show-log-is-offline 将anon-access 设置成 none 。2:认证失败问题:
2016-05-07 17:53:11
979
转载 对象&类&元类(Object & Class & Meta Class)
转载:http://justsee.iteye.com/blog/2163905作为C语言的超集,面向对象成为Objective-C与C语言的最大区别,因此,对象是Objective-C中最重要的部分之一。目前面向对象的语言有很多,Objective-C中的对象又和其他语言中的对象有什么区别呢?下面来简单介绍Objective-C中对象的实现。1、Objective-C中的
2016-04-25 18:00:11
674
原创 cocos2d lua使用 shader
使用步骤:1:初始化GlPrograme的vert和frag [ 两种方式:createWithFilenames(一般扩展用)和createWithByteArrays(内置的可以采用)]2:link和updateUniforms3:GlPrograme加入到GLProgramCache缓存中4:用program生成GLProgramState并加入缓存中 方式:GLP
2016-04-21 21:50:45
3712
转载 Lua的debug.traceback
新的traceback:local function toStringEx(v , len) if len == nil then len = 0; end local pre = string.rep('\t',len); local ret = ""; if type(v) == "table" then if len
2016-04-21 17:31:32
13384
转载 lua C++对象内存管理
1:tolua++如何管理对象的生命周期一般情况下,当lua里对c++对象的引用变量可以被垃圾回收时,tolua++只是简单的释放userdata占用的4字节指针地址内存。但是也可以通过绑定或者代码指定的方式,让tolua++真正释放对象所占内存。绑定的方式,是指在将c++类型构造函数使用tolua++导出到lua里时,tolua++会自动生成new_local方法。如果在lua代
2016-04-19 16:52:09
3150
转载 iOS Code Signing: 解惑
(译)iOS Code Signing: 解惑免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接地址:http://www.raywenderlich.com/2915/ios-code-signing-under-the-
2016-04-14 22:16:58
412
转载 在cocos2d-x中使用RTTI
Android NDK从r5b版本开始有官方支持的STL了,有一个crystax版本早已经支持。官方的支持有两个版本一个是gnu的,一个是stlport。如果你需要在你的NDK程序中使用STL,那么需要在Application.mk文件中添加一个选项,就是APP_STL := stlport_static。 其中APP_STL的取值有以下四种: system --> 系统默认的最小支持的
2016-04-11 22:46:48
513
转载 cocos2d android分析之-libcocos2dlua.so库
首先把so动态库文件 编译出来(通过NDK),然后再 拷贝到android的工程里 libs/armeabi/下,如果libs/armeabi 不存在,那就自己创建,最后用eclipse编译项目,这样将自动把so文件打包到apk里;eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。
2016-04-05 16:23:09
13582
转载 如何在编译cocos2d项目加入自己的脚本
COCOS2D-CONSOLECocos2d-consoleOverviewRequirementSetup EnvironmentUsageAttentionsHow to add commandAdd custom steps during compilingAdvanced FeaturesContributing
2016-03-22 11:29:27
1573
原创 cocos2d tolua C++对象使用lua对象的变量,函数
C++对象绑定到lua通常是创建一个userdata用来存放cpp对象。在tolua库中维护了一张表:tolua_ubox表,它是个弱表,用来缓存所有cppobj的ptr->userdata映射。userdata对象的生成过程和cpp对象到userdata的映射的生成。void tolua_pushusertype_internal (lua_State* L, void* value
2016-03-13 20:07:58
2311
转载 lua笔记
1.lua_gettablevoid lua_gettable (lua_State *L, int index);把t[k] 值压入堆栈,这里的 t 是指有效索引 index 指向的值,而 k 则是栈顶放的值。这个函数会弹出堆栈上的 key,把结果放在栈上相同位置。下面举个例子:// 将一个key放到栈顶,这个key为1。如果你的key是字符串,那就用lua_push
2016-03-10 09:30:55
3130
转载 图片Premultiplied Alpha到底是干嘛用的
Premultiplied Alpha 这个概念做游戏开发的人都不会不知道。Xcode 的工程选项里有一项 Compress PNG Files,会对 PNG 进行 Premultiplied Alpha,Texture Packer 中也有Premultiplied Alpha 的选项。那么问题来了,Premultiplied Alpha 是什么呢?我被这个问题困惑了很久,之前搜到过 Nvi
2016-03-07 10:09:20
12857
2
转载 Lua注册回调到C++
思路像所有语言一样,绑定回调主要是执行的任务执行到特定情形的时候,调用对用回调方法。 本文也一样,Lua注册回调到C++的核心思路是,当C代码执行到特定特定情形的时候,调用Lua的方法。我这里使用的是用lua_stack直接调用lua的方法,没有使用Cocos2d-x封装的那个dispatcher,因为熟悉那个格式太墨迹了。主要步骤如下
2015-11-26 22:12:00
1994
原创 zip
写个zip工具玩玩。// ZlibTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "zip.h"#include "zlib.h"#include "unzip.h"#include "windows.h"#include "iostream"using namespace std;#define
2015-11-21 12:23:34
564
原创 cocos2d 一个坑爹的内存泄露
看以下事例代码:auto node1 = Sprite::create("CloseNormal.png");node1->setName("node1");auto action1 = ScaleTo::create(1.0,0.5);auto node2 = Sprite::create("CloseNormal.png");node2->runAction(action1);
2015-11-17 22:45:20
5932
原创 带参数启动另外一个exe程序
上一篇讲了怎么启动控制台程序,并且指定输出流到控制台。本篇还是以上一篇文章的win32项目来作为被启动的程序。新建一个控制台程序:有多种方式启动另外一个exe程序,不懂就百度一下吧。void testConsole(){ ShellExecute(NULL,"open","F://project//cpp//CppAllTest//Debug//CppWinTest.exe",
2015-11-15 01:27:02
6801
1
原创 启动控制台程序,重定向输入输出流
新建一个win32项目,加入下面这些代码就可以启动控制台程序,并且重定向输出流到控制台程序AllocConsole(); _hwndConsole = GetConsoleWindow(); if (_hwndConsole != NULL) { ShowWindow(_hwndConsole, SW_SHOW);
2015-11-14 23:14:17
1391
原创 android离线环境搭建
1:下载默认的sdk:adt-bundle-windows-x86_64。目录是这样的sdk:eclipse:2:android sdk离线安装也就是下载那些在线从dl-ssl.google.com那里获取到的文件列表。现在我的sdk目录是:多了个system-images,这里面就是android系统的镜像文件,是要自己下载的。我自己单独下
2015-10-22 22:19:44
568
原创 cocos2d clipboard
需求:点击游戏面板中的按钮,将一个文本框中的字符串放入到剪贴板中。平台:win32,android,ios等多个平台。游戏是用cocos2d开发的。第一次写cocos2d跨平台的东西,慢慢摸索着也差不多搞出来了--搞定了android平台,在此记录一下。给外界提供一个接口:virtual bool copyToClipboard(const std::string &c
2015-10-18 17:56:31
3577
原创 cocos2d lua 引用protobuf进行通信
由于项目中前后端通信协议是protobuf,所以就学习并在此记录一下。参考文章:window下使用protobufcocos2d-x 3.1 集成 云风pbc其实前面环境搭建前面那篇文章已经讲的很清楚,还有一个简单的demo,可以直接运行,展示了最基本的通信。下面我就把protobuf签入到cocos2d项目中去。1:将下载下来的pbc项目放入到cocos2d项
2015-09-24 15:58:01
2706
原创 Cocos 子节点的渐变失效的处理
今天在游戏中加了个战斗数值显示,其中就有用到渐变的效果,发现竟然没有生效,查看了源代码发现子节点的opacity值跟随父节点的opacity更新是有前提的,那就是这货:_cascadeOpacityEnabled。请看源代码:void Node::setOpacity(GLubyte opacity){ _displayedOpacity = _realOpacity = opaci
2015-09-17 21:17:26
1682
原创 cocos2d3.2 渲染队列的结构和执行流程分析
在一开始看Render里面代码的时候对render方法有点疑惑:void Renderer::render(){ _isRendering = true; if (_glViewAssigned) { //Process render commands //1. Sort render commands based on ID
2015-08-22 19:21:18
2215
原创 tolua++的一些api的
1:static void mapsuper (lua_State* L, const char* name, const char* base) 作用:将base设置成name的基类,并且将base的全部父类也设置成name的基类实现方式:只要将在name的metatable有base这个key,那么base就是name的基类源代码和分析:static void mapsuper
2015-08-19 20:22:55
4117
原创 cocos2d lua绑定感悟---像cc.Sprite,cc.Director这些是如何识别的
其实自从打开GameScene.lua文件以来,我一直都很想搞清楚的一个问题就是cc.Sprite这些是如何识别的。其实第一反应肯定就是:它肯定是一个全局变量,要不然怎么调用create方法呢。先不考究cocos的C++类方法是如何绑定到lua的,我就是想知道这个全局变量是什么时候注册的?知道一点lua知识的都知道 lua里面的全局变量会保存到一个全局表_G中去,问题就转换为了 什么时候向_G
2015-08-19 19:58:02
3808
原创 cocos lua 绑定感悟---各种表
1:tolua_supertolua_super存在于注册表中,其中记录了各种类型的父类,key是类型的table,value是也是个的表,v_key是父类的名字,value是1。在判断类型的时候,这个非常有用。2:tolua_ubox在注册表中和每种类型的表中都存在这样一张表,注册表是在 toluafix_open 中初始化的,而每种类型的tolua_ubox表示在该注册该类型的时候
2015-08-19 19:45:29
1967
原创 cocos lua绑定感悟---tolua_isusertable及lua如何访问cocos静态函数的方法
现在还是个新手,对很多还不是很了解,所以语言估计会有点晦涩,望原谅啊!!TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err){ if (def && lua_gettop(L)<abs(lo)) return 1;
2015-08-19 17:19:44
2178
原创 cocos 给绑定类加一个命名空间
本来以为很简单的,妈的,碰到一大堆的坑。记录一下步骤:1:给.h和.cpp加上命名空间。#pragma once#include "cocos2d.h"USING_NS_CC;namespace GameLogic{ class MyClass : public Ref { public: MyClass(void); ~MyClass(void); bool
2015-08-18 12:13:29
2381
转载 cocos 绑定到lua时指定命名空间 程序崩溃
引用:http://www.cocoachina.com/bbs/read.php?tid=226362--------------------------------------------------------------------------------一、bindings-generator当有一些感觉狂拽炫酷屌的 C or C++ 函数库想加到专案里时,难免会用上
2015-08-17 21:10:40
1882
原创 cocos自定义类 绑定到lua
1:按照\frameworks\cocos2d-x\tools\tolua下的README.mdown的指示一步一步做下去。务必要和文件中描述的一样,我已经被这个坑爹的东西坑的很惨了。(检查这个有没有配置好的方法是:运行下那个genbindings.py,看是否能生成liblua的auto目录下的那些文件。如果能,那么你的环境配置就成功了。)2:写一个自定义的C++类例子:#pragm
2015-08-17 15:51:05
1410
转载 lua_next函数分析
lua_next(L,index):先把 表(lua栈 index所指的表), 的当前索引弹出,再把table 当前索引的值弹出,也就是先弹出 table的索引,再弹出table索引的值简单一个例子:NUMBER_TABLE_WITH_INDEX ={["a"] = 1,["b"] = 2,["c"] = 3} lua_getglobal(L,"STRING_TABLE_WI
2015-08-16 15:54:07
13572
2
原创 cocos2d3.2 渲染优化机制
好久没写BLOG了,也是这一年都在项目上混,没什么时间去学习其他的东西,刚好最近闲下来了,就开始研究cocos2d了。最近学习了下它的渲染模式,和大家分享一下,其实具体的流程网上教程一抓一大把,我只是用几个例子来分析一下。例子一:for(int i=0;i<100;i++){ Sprite* sprite1 = Sprite::create("CloseNormal.png");
2015-07-27 23:13:23
2856
深入理解计算机系统
2013-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人