??xml version="1.0" encoding="utf-8" standalone="yes"?>国产激情久久久久影院老熟女,久久噜噜久久久精品66,亚洲国产精品狼友中文久久久http://www.shnenglu.com/colorful/category/20936.htmlzc qq:1337220912zh-cnThu, 12 Feb 2015 11:46:10 GMTThu, 12 Feb 2015 11:46:10 GMT60cocos2dx lua protobufhttp://www.shnenglu.com/colorful/archive/2015/02/12/209802.html多彩人生多彩人生Thu, 12 Feb 2015 03:42:00 GMThttp://www.shnenglu.com/colorful/archive/2015/02/12/209802.htmlhttp://www.shnenglu.com/colorful/comments/209802.htmlhttp://www.shnenglu.com/colorful/archive/2015/02/12/209802.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209802.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209802.html
http://blog.csdn.net/weyson/article/details/17024325
http://www.shnenglu.com/colorful/archive/2015/01/17/209557.html
http://blog.csdn.net/w00w12l/article/details/39316321

protoc-gen-lua下蝲地址: https://github.com/sean-lin/protoc-gen-lua

1/ 先到protobuf的python目录下执?br />    python setup.py build
    python setup.py install

2/ 在protoc-gen-lua的plugin目录中新建protoc-gen-lua.bat, 内容如下:
@python 目录\protoc-gen-lua\plugin\protoc-gen-lua

3/ 用protoc把proto文g生成lua文g
  protoc --lua_out=./ --plugin=protoc-gen-lua="目录\protoc-gen-lua.bat"  test.proto

4/ protoc-gen-lua/protobuf下的pb.c 攑ֈ工程的Classes? q加入到c++工程?br />
5/ protoc-gen-lua/protobuf上的所有lua文g攑ֈ工程的src目录(lua目录)?br />
6/ AppDelegate.cpp d代码
extern "C"{
    int luaopen_pb(lua_State* L);
}
在applicationDidFinishLaunching()中调?luaopen_pb(state);

---------------------------------------------------------------------------
    require "src/xy/person_pb"  
    local msg = person_pb.Person()  
    msg.id = 100   
    msg.name = "foo"   
    msg.email = "bar"   

    local pb_data = msg:SerializeToString()  -- Parse Example  
    print("create:", msg.id, msg.name, msg.email, pb_data)  


    local msg = person_pb.Person()   
    msg:ParseFromString(pb_data)   
    print("parser:", msg.id, msg.name, msg.email, pb_data)

---------------------------------------------------------------------------
UL到android 记得pb.cd到proj.android\jni\Android.mk?br />
 

多彩人生 2015-02-12 11:42 发表评论
]]>
Quick-Cocos2d-x 集成 Google protobuf Ҏhttp://www.shnenglu.com/colorful/archive/2015/01/17/209557.html多彩人生多彩人生Sat, 17 Jan 2015 08:08:00 GMThttp://www.shnenglu.com/colorful/archive/2015/01/17/209557.htmlhttp://www.shnenglu.com/colorful/comments/209557.htmlhttp://www.shnenglu.com/colorful/archive/2015/01/17/209557.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209557.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209557.htmlhttp://cn.cocos2d-x.org/tutorial/show?id=506
本文向您介lQuick-Cocos2d-x集成google protobuf的方法? 
 
W一?  需要最新的protobuf cd和解析程序?nbsp;
下蝲地址Q?a target="_blank">https://github.com/sean-lin/protoc-gen-lua
 
git clone https://github.com/sean-lin/protoc-gen-lua.git CQ意的一个地?
 

然后Q可以得到重要的两个目录

1
2
protoc-gen-lua/plugin/ 
protoc-gen-lua/protobuf/
 
W二步, 需要用protoc —lua_out=. q种ҎQ?我们自q*.proto 的文件解析成lua文g

plugin目录是提供将buffer 文g解析成lua 版本的类库, 需要python 支持? 如果已经~译了google 官方的protoc 那个E序Q?只需要在pȝPATH环境变量总追加plugin目录好:

1
export PATH={protoc-gen-lua DIR }/plugin:$PATH
 
关于protoc的编译另请google .
 
如果解析不出lua文g来, 可以手动志信一下plugin/protoc-gen-lua的程序, 他应该是+x 的权?chmod +x plugin/protoc-gen-lua)
 
l节的安装步骤可以参?nbsp;https://code.google.com/p/protoc-gen-lua/
 
W三?Q?protobuf 集成到quick ?/strong>
protoc-gen-lua/protobuf/ 目录是要编译到quick-cocos2d-x目录里面的部分?nbsp;
 
现在Q?我们只需?protoc-gen-lua/protobuf/pb.c q个文g 
 

先确定自qquick-cocos2d-x lua扩展目录Q?

1
/quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/
 
所有lua 的c/c++现成扩展,都可以直接放到这里?nbsp;
  
pb.cq个文g复制?lua_extension目录下, 最好独立一个目录, 免得扩展多了乱?nbsp;
  

q是我的目录l构:

1
./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c
  
然后开始修Ҏ展程序配|文? lua_extensions.c
 

路径为:

1
./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/lua_extensions.c
 

目前是一个不?0行的文Ӟ 我打全部脓q来Q?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "lua_extensions.h" 
   
#if __cplusplus 
extern "C"
#endif 
    
// cjson 
#include "cjson/lua_cjson.h" 
    
    
// zlib 
#include "zlib/lua_zlib.h" 
    
    
// lpack 
#include "lpack/lpack.h" 
    
    
// socket 
#include "socket/luasocket.h" 
#include "socket/mime.h" 
#include "socket/socket_scripts.h" 
    
    
// filesystem 
#include "filesystem/lfs.h" 
    
    
// lsqlite3 
#include "lsqlite3/lsqlite3.h" 
    
    
#include "protobuf/pb.c"   //引用protobuf 库文?nbsp;
    
    
static luaL_Reg luax_exts[] = { 
     {"cjson", luaopen_cjson_safe}, 
     {"zlib", luaopen_zlib}, 
     {"pack", luaopen_pack}, 
     {"socket.core", luaopen_socket_core}, 
     {"mime.core", luaopen_mime_core}, 
     {"lfs", luaopen_lfs}, 
     {"lsqlite3", luaopen_lsqlite3}, 
     {NULL, NULL} 
}; 
    
    
void luaopen_lua_extensions(lua_State *L) 
     // load extensions 
     luaL_Reg* lib = luax_exts; 
     lua_getglobal(L, "package"); 
     lua_getfield(L, -1, "preload"); 
     for (; lib->func; lib++) 
     
         lua_pushcfunction(L, lib->func); 
         lua_setfield(L, -2, lib->name); 
     
     lua_pop(L, 2); 
    
    
     // load extensions script 
     luaopen_socket_scripts(L); 
     luaopen_pb(L);   //q是加入的protobuf 扩展注册?nbsp;
    
    
#if __cplusplus 
} // extern "C" 
#endif
x Q?protobuf 扩展部分q扩展完成了?nbsp;
 
认是否成功支持 Q?可以在quick 目最先被调用的lua文g中追?require "pb" 做测试?nbsp;
 
*但这时候通过protoc 转码后得到的lua文gq不能被解析?nbsp;
 
W四?从项目中包含protobuf?lua?/strong>
protoc-gen-lua/protobuf/q个目录下面Q?q有大量?lua文gQ?是用来支持proto转码后的文g解析调用的?不能了q些文g?nbsp;
 
复制protoc-gen-lua/protobuf文g?到项目中 scripts目录下? 
  

目录l构应该是这LQ?

1
[PROJECT]/scripts/protobuf/*.lua
 
然后Q?需要告诉框Ӟ从哪里可以引用到它?nbsp;
 

修改main.lua 在require("appxxxxxx") 上面 Q?加入下面的代码:

1
package.path = package.path .. ";./protobuf/?.lua;./scripts/protobuf/?.lua;"
 
q个ҎQ?能保证程序在被编译到手机之后仍然可以l箋讉Kq个库?nbsp;
  
***千万别把转码的proto文g攑ֈ[PROJECT]/scripts/protobuf 目录里面.不信可以试试?
 
现在Q?目支持protobuf 文g的解析了?
 
W五? 重新~译player-x
如果不习惯用player-x调试Q?q个步骤不是必须的?nbsp;
 

q入player-x qt源码目录 Q?

1
cd quick-cocos2d-x/player/proj.qt
 

使用qmake 文g执行quick-x.pro 文g 

1
qmake ./quick-x.pro
 
l箋Q?
make 
 
{待l束Q?得到的quick-x-player文gQ?nbsp;
 
攑ֈQquick-cocos2d-x/player/bin/mac/ 目录下, q样sublime text 装QuickXDev 扩展的直接可以用?nbsp;
  
**如果是mac os 10.9 pȝQ?可能~译不过去player-xE序?我遇Cq个问题?nbsp;
 
会提C错? pb.c:28:10: fatal error: 'endian.h' file not found 
 

如果错误信息相同Q?修改文g:

1
./quick-cocos2d-x/lib/cocos2d-x/scripting/lua/lua_extensions/protobuf/pb.c
 

查找?

1
#include <endian.h>
  

临时变更为:

1
#include <machine/endian.h>
  
然后重新~译 player-x 
 
make p够了 
 
make
 
**player-x ~译完毕后, 千万要将endian.h 引用改回原来?#include <endian.h> Q?否则打包到手机的时候又回提C文件找不到了?nbsp;


多彩人生 2015-01-17 16:08 发表评论
]]>
Lua注册回调到C++http://www.shnenglu.com/colorful/archive/2015/01/17/209553.html多彩人生多彩人生Sat, 17 Jan 2015 03:12:00 GMThttp://www.shnenglu.com/colorful/archive/2015/01/17/209553.htmlhttp://www.shnenglu.com/colorful/comments/209553.htmlhttp://www.shnenglu.com/colorful/archive/2015/01/17/209553.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209553.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209553.htmlhttp://cn.cocos2d-x.org/tutorial/show?id=1896

思\

像所有语a一Pl定回调主要是执行的d执行到特定情形的时候,调用对用回调Ҏ?本文也一PLua注册回调到C++的核心思\是,当C代码执行到特定特定情形的时候,调用Lua的方法?/p>

我这里用的是用lua_stack直接调用lua的方法,没有使用Cocos2d-x装的那个dispatcherQ因为熟悉那个格式太墨迹了?/p>


主要步骤如下

  • ~存Lua函数在Lua环境中的引用

  • 在C代码的地方用C的方式设|好回调

  • 在C代码回调函数执行的时候,调用lua函数


实现

  • C代码l定回调Q调用Lua函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void ArmatureNode::registerMovementEventHandler(int handler)
{
    unregisterMovementEventHandler();  //U除之前注册的监?/code>
    _movementHandler = handler;         //~存lua函数的引?nbsp;q个后边?/code>
     
    auto dispatcher = getCCEventDispatcher();
     
    auto f = [this](cocos2d::EventCustom *event) //注册c代码形式的回?nbsp;q里用function?/code>
    {
        auto eventData = (dragonBones::EventData*)(event->getUserData());
        auto type = (int) eventData->getType();
        auto movementId = eventData->animationState->name;
        auto lastState = eventData->armature->getAnimation()->getLastAnimationState();
         
        auto stack = cocos2d::LuaEngine::getInstance()->getLuaStack();
        stack->pushObject(this"db.ArmatureNode");
        stack->pushInt(type);
        stack->pushString(movementId.c_str(), movementId.size());        
        //通过LuaStack调用lua里的函数    最后一个参数设|参C?/code>
        stack->executeFunctionByHandler(_movementHandler, 3);
    };
     
    dispatcher->addCustomEventListener(dragonBones::EventData::COMPLETE, f);
}
void ArmatureNode::unregisterMovementEventHandler(void)
{
    if (0 != _movementHandler)
    {
        cocos2d::LuaEngine::getInstance()->removeScriptHandler(_movementHandler); //U除lua函数的绑?/code>
        _movementHandler = 0;
    }
}
  • 提供Lua函数l定到C的方?  

上边的这个函数直接用cocos里的genbinding.py 是无法正生成Lua里可调用的接口的Q需要手动编写绑定方?

说这个得用到Cocos2d-x中提供的一个方法:toluafix_ref_function会把一个Lua栈中的方法{成一个intQ以便C++中调用。我会在最后面说这?/p>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int tolua_db_DBCCArmature_registerMovementEventHandler(lua_State* tolua_S)
{
    if (NULL == tolua_S)
        return 0;
    int argc = 0;
     
    dragonBones::ArmatureNode* self = nullptr;
    self = static_cast<dragonBones::ArmatureNode*>(tolua_tousertype(tolua_S,1,0)); //W一个参?nbsp;是lua里的self
     
    argc = lua_gettop(tolua_S) - 1;
     
    if (1 == argc)
    {
        //W二个参敎ͼ是Lua里的function q里要通过toluafix_ref_functionq个函数映射成一个Int?/code>
        int handler = (toluafix_ref_function(tolua_S,2,0)); 
        self->registerMovementEventHandler(handler);
         
        return 0;
    }
    return 0;
}

 

  • 绑定方法绑定到Lua环境?/p>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int extends_ArmatureNode(lua_State* tolua_S)
{
    lua_pushstring(tolua_S, "db.ArmatureNode");//之前db.ArmatureNode是通过脚本l定在lua里。这里只做扩?/code>
    lua_rawget(tolua_S, LUA_REGISTRYINDEX);
    if (lua_istable(tolua_S,-1))
    {
        lua_pushstring(tolua_S,"registerMovementEventHandler");
        lua_pushcfunction(tolua_S,tolua_db_DBCCArmature_registerMovementEventHandler);
        lua_rawset(tolua_S,-3);
    }
     
    lua_pop(tolua_S, 1);
    return 0;
}
  • Lua里设|回调到C++

1
2
3
4
5
6
7
8
 local arm = db.ArmatureNode:create("Dragon")
    local animation = arm:getAnimation()
    animation:gotoAndPlay("walk")
    arm:registerMovementEventHandler(
        function(...)
            print(...) 
        end
    )


-试

打印回调输出Q测试通过 userdata 8 walk


其他

  • toluafix_ref_function 以及 toluafix_get_function_by_refid

q?两个Ҏ是相互对应的 toluafix_ref_functionq个Ҏ在注册表上将一个lua的function与一个function_id生成映射 toluafix_get_function_by_refid Ҏ可以通过前一个方法生成的function_id来讲l定的lua function攑ֈ栈顶

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//
TOLUA_API int toluafix_ref_function(lua_State* L, int lo, int def)
{
    if (!lua_isfunction(L, lo)) return 0;
    s_function_ref_id++;                            //function_id ?
    lua_pushstring(L, TOLUA_REFID_FUNCTION_MAPPING);//在注册表上,存放luafunction 映射table 的key压栈
    lua_rawget(L, LUA_REGISTRYINDEX);               //获取Ҏ映射表,攑֜栈顶
    lua_pushinteger(L, s_function_ref_id);          //function_id压栈
    lua_pushvalue(L, lo);                           //lo有效处烦引处是luaҎQluaҎ拯Q压?/code>
 
 
    lua_rawset(L, -3);                        //生成映射 
    lua_pop(L, 1);                                              
    return s_function_ref_id;
}
TOLUA_API void toluafix_get_function_by_refid(lua_State* L, int refid)
{
    lua_pushstring(L, TOLUA_REFID_FUNCTION_MAPPING);            //存放luafunction 映射table 的key压栈
    lua_rawget(L, LUA_REGISTRYINDEX);                           //获取Ҏ映射表,攑֜栈顶
    lua_pushinteger(L, refid);                                  //function_id压栈
    lua_rawget(L, -2);                                          //获取到的luafunction 攑ֈ栈顶
    lua_remove(L, -2);                                          //
}
  • executeFunctionByHandler

executeFunctionByHandler q个Ҏ只是通过toluafix_get_function_by_refid 获取到function然后通过lua_pcall Ҏ调用Q代码就不写了?/p>



多彩人生 2015-01-17 11:12 发表评论
]]>
COCOS2DX,LUA,学习W记http://www.shnenglu.com/colorful/archive/2015/01/01/209376.html多彩人生多彩人生Thu, 01 Jan 2015 09:12:00 GMThttp://www.shnenglu.com/colorful/archive/2015/01/01/209376.htmlhttp://www.shnenglu.com/colorful/comments/209376.htmlhttp://www.shnenglu.com/colorful/archive/2015/01/01/209376.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209376.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209376.htmlhttp://blog.sina.com.cn/s/blog_4ceb1a410101d4tq.html

以下大部分来自网l,只做学习记录用?/p>

一 框架层面
?Lua层面
?工具层面
?android打包

一 框架?br /> 整体来说Qcocos2dX提供的一个简便的框架Q包含了渲染Q动画,事g分发Q网l还有UIQ物理引擎等几大模块。对于做一个游戏从功能上来说已l?br /> _了。我从这几个斚w分别探讨下cocos2dX的优~点以及我们在项目中是如何用到的

Q?Q渲染:渲染q块Q他的渲染数据跟Spriteq行了绑定,然后对于openGl也是直接q行了调用,而不是采用策略或者插件进行调用。对于后期如果采用DX的话

我觉得这块比较冗余些。但是这些ƈ不会影响游戏的渲染速度。它提供了batch来进行批ơ渲染。所以在游戏里,我们对资源进行了分组Q然后分别用textPacker

拼成一张图片,格式?没有alpha的采?RGB565Q有alpha的采用RGBA4444Q要求高的话采用RGBA8888Q然后统一采用Ҏ渲染。游戏的速度会提升很多?/p>

对于游戏数据的管理,cocos采用CCTextureCacheq个单例c进行管理。释攑֏以采用全部释放,q有释放没有用过的。ƈ且也提供了异步加载动画资源的Ҏ

QPSQ这个对于想做ARPG的同学来_可是好东西了Q。所以对于渲染这块,我们量用批ơ,然后记得释放内存OK了?/p>

Q?Q动画:cocos他提供了一套action机制。整体来_是sprite run action。然后驱动action里面的动L据,q行播放动画。所有的动画都可以走action

接口。对于用者来_也不用去兛_其他东西Q只需要初始化好你惌的动作,然后把动作数据塞laction。然后让sprite run 可以了。大概action是q个

程。本来我们想自己写自q动画Q但是到后期Q因己写一套工作量大。所以对于moveQscale什么的仍旧采用cocos自己的。只有animation采用了我们的?/p>

但是现在惌v来,完全没有必要。cocos提供的已l够了。我们所需要做的就是把动作~辑器导出的动画数据用cocos的动作翻译(对于动作~辑器我后面会讲Q写
q么一个层好

Q?Q事件分发:cocos对于事g分发q块比较弱了。他是事件管理是通过存储每一个object以及他接收事件的优先U。然后进行分发。但是他q没有对场景q行树的理

。所以我们的改变是建立起场景树Q然后事件分发先从场景顶端往下分发。期间每个节点可以设|是否响应以及是否l往下传递的属性(作ؓOCnQ这块完全模仿苹果那套)

完全丢弃了cocos的那一套事件分发机制。对于场景树的维护,只需要每ơstep的时候更C。所以对于查询性能需要好好写一?br /> Q?Q网l:cocos提供了对curl的封装。提供了http的一些简单比如getQpost的封装。但对于断点l传{ƈ没有装。对于socketQcocos则完全没有提供。我们采用了

BSDSocket

Q?QUIQUIq边Qcocos提供了几U简单的控gQ比如CCButton{。他们都l承于CCSpriteQ但是太。而且初始化方法是在是太过于奇葩。所以我们自己写了一套UI?/p>

Q其实无非也是 buttonQlabelQtableViewQscrollViewQimageq有textInputQ他们也都承CCSprite。然后加入一些每个控件独有的逻辑可以了。最ȝ

的应该就是textInput了。照着cocos提供的input写一遍,然后Ҏ。(cocos提供了CCEditeBoxQ但是这货的的解军_法是在IOS上调用IOS的的控g。但是他是直接加CegLView上,对于面UdQ页面关闭处理v来比较麻烦?br /> 所以这个暂时还不能用)

?lua
Z让游戏更有灵zL,cocos提供了lua。由C++做引擎,然后luad逻辑。这样就可以l开Ҏ的审核。我们就讨论下C++与lua到的问题?/p>

Q?Q通讯Qcocos采用了tolua++来进行C++与lua的通讯。看Cocos2dXLuaLoad文g里,那些是lua与C++通讯的一个层。具体通讯原理比如是通过

栈,什么的我就不讲了(其实我也不太懂)。这些东西tolua++都已l替咱封装好了。我们需要做的就是写好C++文g
然后生成load文g。在CCLuaEngine里调用你生成的那个loadҎ。lua可以访问C++了。需要说明的是,我们q边量是lua调用C++的方法,C++不会去调?br /> Lua的方法。调用也是通过callBack去调用?/p>

Q?Q问题:
问题1.当C++里面的函数需要传递lua指针Ӟ在C++里,lua的函数指针是一个int的变量。生成时用Lua_Func来代ѝ然后生成后执行cocos2dX源码

里面build.xml。xml的左叛_是定制tolua++的生成。在里面把lua的函数指针{成了int了。具体的看xml内容可以了?br /> 问题2.在CCLuaEngine里调用那些loadҎӞ是有序的。一定要父类在前Q子cd后。不然子cd无法讉K父类的方法?/p>

Q?Q写法:
lua都要加入moduleQ变成模块化Q提高代码的可读性,然后require的时候一定要像cocos例子那样Q写全\径。不然打包android的时?br /> 悲剧了?/p>

lua里面不要用全局变量持有sprite{C++数据。每个模块也要像cocos那样提供2个方法,一个是q入该模块的初始化方法,一个是退?br /> 该模块的销毁方法?/p>

对于luaq边写法Q我们参考了 moaiQ还有coronaQ在lua那边在封装下C++Q其他lua不是直接调用C++,量不要让lua的写法太q于
z跃。不然以后调试真心头大?/p>

Q?Q调试:lua的调试是最大的问题。仅凭一个lua_error所报错的信息是完全不够的。而且Xcode对于lua的语法高亮支持的也不好。我们对?br /> q行?斚w的尝?/p>

1.windows下,用decoda。然后也可以打断炏V?/p>

2.mac下,暂时用Eclips加lua插gq行写luaQ然后通过logq行调试。不q最q想试VimQ应该会比之前靠谱?/p>

?工具层面
工具上,cocos提供?cocosBuilderQ我觉得他属于一个集成的工具。想要追求全Q必然不_。所以cocosBuilder不管?br /> 场景~辑Q界面编辑,q是动作~辑都不是很好用。所以我们采用的{略是用Flash的那一套。界面编辑用FlexBuilder的界面编辑,然后
导出xmlQ写一个xml译c,Ҏxml创徏面板Q动作编辑用FlashPro。然后用jsfldflash信息Q导出xmlQ用cocos自己的action机制
ȝ译,演绎。场景编辑的话,我们的游戏ƈ没有用场景编辑的需求,所以没有进行研IӞ不过titleMap是个不错的选择

?andrid打包
android打包Q其实难点在于调试。因为无法打断点。本来lua难调试Q结果还要加上android。打包android那边是多看看NDKQJNI?br /> 一些资料,然后了解mk文g怎么书写。看看cocos提供的那些sh脚本。打包大部分问题都是路径的问题。根据错误一步步来,别急,肯定能打上?/p>

打包完成以后Q剩下就是调试。调试的话主要就是C++与java之间的通讯了。那p多看看jni的一些东ѝ然后看cocos/platform/ q有android

里面的类。那些是c++跟java通讯的类。我们调试主要就在那打log。jni的原理我׃讲了。。多看看懂一点就可以了。毕竟咱只是Z看懂Q会照猫画虎

写一炏V没必要q。对了,android好奇葩,上网q需要权限配|!Q!在mainfest.xml配置权限。靠Q搞了好久这个问题?/p>
好了Q我对于cocos的见解就q么些。可能包含了cocos所有的东西吧。都不细Q只是给大家当一个消遣时间的东西。欢q大家一赯论?br /> 最后,感谢cocos2dX的那些大牛们。是你们的无U让我们才有Zq么Ҏ接近游戏开发。谢谢你?/div>

多彩人生 2015-01-01 17:12 发表评论
]]>用Cocos Code IDE写LuaQ如何与目中的C++代码和谐相处http://www.shnenglu.com/colorful/archive/2014/12/30/209339.html多彩人生多彩人生Tue, 30 Dec 2014 03:19:00 GMThttp://www.shnenglu.com/colorful/archive/2014/12/30/209339.htmlhttp://www.shnenglu.com/colorful/comments/209339.htmlhttp://www.shnenglu.com/colorful/archive/2014/12/30/209339.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209339.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209339.htmlhttp://segmentfault.com/blog/hongliang/1190000000628902

1、在用Cocos Code IDE建立新的cocos2d-x目Ӟ最好选中Add Native Codesq个选项Q只有选中了它Q项目目录里才会?strong>frameworks目录Q里面才会有AppDelegate.cpp{重要的C++c(E序真正的入口)。如果不N这个,则Cocos Code IDE使用的是默认~译好的PrebuiltRuntimeLua.appE序Q日后如果要更改C++部分的程序逻辑Q还是需?code>frameworks目录中的源代码才行,所以徏议Cocos Code IDE应该?code>Add Native Codesq个选项默认为选中状态才寏V?/p>

Cocos Code IDE新徏工程时最好选中Add Native Codes

2、如果之前徏立项目时没有N?code>Add Native CodesQ也可以随时通过右键菜单->Cocos Tools->Add Native Codes Supportl补回来?/p>

Cocos Code IDEdNative Codes

3、有?code>frameworks/runtime-src/Classes目录Q就可以M?code>AppDelegate.cpp{C++文g了。简单修改一下,打印个log看看Q?/p>

单修改AppDelegate.cpp

4、C++文g修改好了Q需要编译才能修改生效Q最单的办法是在Cocos Code IDE中通过右键菜单->Cocos Tools->Build Custom RuntimesQ选中Build Mac Runtime卛_?/p>

Cocos Code IDE Build Mac Runtime

Cocos Code IDE Build Mac Runtime

5、编译完成后Q感兴趣的话p?code>runtime/mac目录下看到多了一?code>CocosLuaGame.appE序包,q就是刚刚编译生成的MacE序Q以后每?code>frameworks目录下的C++文g有修攚w需要再~译一ơ?/p>

cocos2d-x~译后的E序都在runtime/目录? /></a></p>  <p>6、用Cocos Code IDE?code>Build Custom Runtimes</code>功能后,感兴的话就会发现当前项目的<code>Debug Configurations</code>发生了变化,之前?code>Select Runtime</code>中执行的E序?code>PrebuiltRuntimeLua.app</code>Q现在已l被自动Ҏ了新~译出来?code>CocosLuaGame.app</code>E序。这一步是Cocos Code IDE自动做的Q而且非常重要Q如果不更改q个选项的话Q会D调试时仍然执行的是旧的C++代码Q新修改的代码无法v作用?/p>  <p><a  id=Cocos Code IDE的Debug选项要选中正确的启动程? /></a></p>  <p>7、如果修改C++文g比较频繁Q用Cocos Code IDE的右键菜单来~译q不如直接在命o行下敲命令快Q?/p>  <blockquote>   <p><code>cocos compile -p mac</code></p> </blockquote>  <p>注意Q如果始l用命令行来编译,从来没用qCocos Code IDE的右键菜单,那么需要手工修?code>Debug Configurations</code>?code>Select Runtime</code>Q确保调试时启动的是<code>CocosLuaGame.app</code>?/p>  <p>8、现在来启动一下,可以看到C++文g中修改的代码已经生效了:</p>  <p><a  id=修改后的AppDelegate.cpp文g起作用了



多彩人生 2014-12-30 11:19 发表评论
]]>cocos2dx3.2 lua学习http://www.shnenglu.com/colorful/archive/2014/12/25/209302.html多彩人生多彩人生Thu, 25 Dec 2014 08:20:00 GMThttp://www.shnenglu.com/colorful/archive/2014/12/25/209302.htmlhttp://www.shnenglu.com/colorful/comments/209302.htmlhttp://www.shnenglu.com/colorful/archive/2014/12/25/209302.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209302.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209302.html官方|站永远是个不错的地?
  http://cn.cocos2d-x.org/
  http://cn.cocos2d-x.org/tutorial/lists?id=82

现在Lc++ + lua开? 主要是lua更新的优?br />
新徏lua目
lua目有两个模?lua-template-default和lua-timeplate-runtime,
可以用cocos new 命oQ也可以用cocos code ide.
用cocos new 命o创徏lua工程
指定用runtime模板
cocos new -p com.game.zc -l lua -t runtime -d e:/project helloLua
使用default模板
cocos new -p com.game.zc -l lua -d e:/project helloLua

用Cocos Code IDE 创徏lua工程
code ide 用的是runtime模板, 创徏工程时记得选中"dC++代码", q样会在工程目录下生成frameworks文g夹,里面是c++层的代码

Lua 调用自定义c++c?br />
http://cn.cocos2d-x.org/tutorial/show?id=1749
http://cn.cocos2d-x.org/tutorial/show?id=1555
http://cn.cocos2d-x.org/tutorial/show?id=1295
在移植androidӞ需要修改frameworks\cocos2d-x\cocos\scripting\lua-bindings\Android.mk文g
自定义的c++cL件添加到LOCAL_SRC_FILES, 文g所在目录添加到LOCAL_C_INCLUDES
如果是用Cocos Code IDE开?
c++文g修改?需要在Cocos Code IDE 里执行如下操作才能生? 目叛_-->cocos 工具-->构徏自定义Runtime

关于UL,
1/ 可先用cocos compile -p android ~译目Q打包时再用eclipse来打?br />2/ 使用Cocos Code IDE 很方? 目叛_-->cocos 工具-->为Android打包apk

----遇到的错?-----------------------------
1
http://www.cocoachina.com/bbs/read.php?tid=234772
问题: LibclangError: [Error 193] %1 不是有效?Win32. To provide Config.set_library_path() or Config.set_library_file().

原因:Python、pyyaml、pyCheetah都用32位版本(psQtolua目录下README.mdown里有下蝲链接Q?br />如果q不行的?去github上下载最新的bindings-generator(qps:下蝲地址: https://github.com/guojian822/bindings-generator)





多彩人生 2014-12-25 16:20 发表评论
]]>
使用cocos compile -p android时L报错? BUILD FAILED \ant\build.xml:892http://www.shnenglu.com/colorful/archive/2014/12/25/209298.html多彩人生多彩人生Thu, 25 Dec 2014 04:10:00 GMThttp://www.shnenglu.com/colorful/archive/2014/12/25/209298.htmlhttp://www.shnenglu.com/colorful/comments/209298.htmlhttp://www.shnenglu.com/colorful/archive/2014/12/25/209298.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209298.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209298.html
http://www.cocoachina.com/bbs/read.php?tid=215700

错误如下。。。但是用eclipse生成apk包时不收影响。?br />
-dex:
      [dex] input: E:\cocos\Mine\frameworks\runtime-src\proj.android\bin\classes
      [dex] input: E:\cocos\Mine\frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar
      [dex] Pre-Dexing E:\cocos\Mine\frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar -> classes-022efb48739f8be18b60e7464733537d.jar
      [dex] Converting compiled files and external libraries into E:\cocos\Mine\frameworks\runtime-src\proj.android\bin\classes.dex...
       [dx]
       [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
       [dx]com.android.dx.util.DexException: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer;
       [dx]     at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
       [dx]     at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
       [dx]     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
       [dx]     at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
       [dx]     at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
       [dx]     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
       [dx]     at com.android.dx.command.dexer.Main.run(Main.java:232)
       [dx]     at com.android.dx.command.dexer.Main.main(Main.java:174)
       [dx]     at com.android.dx.command.Main.main(Main.java:91)
       [dx]

BUILD FAILED
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:892: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:894: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:906: The following error occurred while executing this line:
E:\BST\adt-bundle-windows-x86-20130917\sdk\tools\ant\build.xml:284: null returned: 2
---------------------------
查资料发玎ͼ发现Q?br />cocos compile 的脚本里会自动把“frameworks\js-bindings\cocos2d-x\cocos\platform\android\java\bin\classes.jar”Q?dx的java代码Q添加到classes.dex中?br />而当用eclipse打开android目Ӟ默认是没有引?dx的javacȝQ此时如果想正常q行android目Q需要引?dx的jar包,或者引?dx的java源码?br />?果引入java的源码,当再ơ执?#8220;cocos compile”Ӟ2dx的java源码生成的class文gQ会跟默认引入的“frameworks\js-bindings\cocos2d-x \cocos\platform\android\java\bin\classes.jar”发生冲突Q会?“com.android.dx.util.DexException: Multiple dex files define ……”的错误;
?果不引入java源码Q而是直接?#8220;Build path”中引入了jar包(位于引擎的:frameworks\js-bindings\cocos2d-x\cocos\platform \android\java\bin\下的classes.jarQ,此时android的项目不报错了,但是直接使用eclipse生成apk包时会发 现安装到手机上无法运行,q是因ؓ目需要的2dx文g没有被打入到apk中。此Ӟ可以对应的jar包放到android目的libs目录?Qframeworks\runtime-src\proj.android\libs\Q,q样生成的apk包就可以正常q行了?br />但是Q如果这样做了,再次执行“cocos compile”Ӟ发现q会报如上的错误Q这是因本里会默认将libs目录里的文gd到classes.dex中?br />
lg所qͼ
出现如上错误的原因是在?#8220;cocos compile”脚本Ӟ2dx文g被重复添加了?br />不过Q如果像我这h作,使用“cocos compile”~译脚本Q主要是因ؓ该脚本会js文g和资源拷贝的android目里)Q用eclipseandroid目打包成apkQ可以忽略如上问题的Q感觉很不爽。。。?

-------------解决Ҏ
注释掉project.properties文g中的#android.library.reference.1=../cocos2d/cocos/platform/android/java可以啦Q!Q?


多彩人生 2014-12-25 12:10 发表评论
]]>
cocos2dx使用了第三方库照L植androidq_-解决iconv库的UL问题http://www.shnenglu.com/colorful/archive/2014/12/13/209176.html多彩人生多彩人生Sat, 13 Dec 2014 07:56:00 GMThttp://www.shnenglu.com/colorful/archive/2014/12/13/209176.htmlhttp://www.shnenglu.com/colorful/comments/209176.htmlhttp://www.shnenglu.com/colorful/archive/2014/12/13/209176.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209176.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209176.html
http://www.cocoachina.com/bbs/read.php?tid=195310
当我写这文章的时候我是怀着Ȁ动的心情的,因ؓ我又解决了一个技术问题。你可能寚w目还一知半解,q是什么意思,我之所以要写这文章就是要解决当我们在cocos2dx中用了W三方库的时候,UL到androidq_的过E中是会报错的问题,典型的例子就是我在上几篇博客中用了~码转换的库iconvQ在我移植到androidq_试的时候就出现了错误,各种各样的错误,|上搜了一下,但是|上的方法感觉都很老了Q有的也没说明白Q今天通过摸烦马上分nl大Ӟ让大家也走歪\?/strong>


?果你q不会移植androidq_Q请先看我上一的博客Q先换个其他的不包含iconv库的工程Q移植成功了再来做今天的事情。今天我们不需要准备Q?工具Q需要做的就是理?mk文g的含义,知道怎么攏V我们先来看一下我字体和字W编码这博客GBKToUTF8的头文g是怎么包含iconv库的?br />

1
2
3
4
5
#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#include "iconv\iconv.h"
#else
#include "../../../../libiconv/include/iconv.h"
#endif


如果是win32q_的话q引擎里边的第三方库,q个iconv库所在的路径是:
E:\cocos2d-x-2.2\cocos2d-x-2.2\cocos2dx\platform\third_party\win32\iconv。但如果是移植到androidq_的你需要加上你androidq_的库的\径,也就是说你需要先下蝲好iconv的库Q放C个你的\径,q里我放到的是我引擎的根目录下,所以写的就是上边的代码Q大家下M载这个库Q然后按我说的改了代码。然后我们就来看看这?mk文gҎ么改,我们要修改的是jni目录下的.mk文gQ我先截上几张图片,说说里边代码的含义?br />
上边的这张图片网上有不少的教E都说需要修改,但在我看来根本不是,因ؓ当我在这里加了iconv.h的\径以后编译的时候Q然报错,说找不到iconv.hq个文g。所以以后大家也不要改这里,没用的?br />

?边的W一张图片看C划线的地方了吗?q个是我加上ȝQ你需要改吗?{案是需要的Q但是名字可以和我不一P那名字改成什么样的呢Q这得看另一个文?了,我们{等再说。上面的W二张图片那个划U的地方也是我加上去的,你也需要修改,Ҏ什么也需要看另一个文件。好了现在我们就来说到底看哪个文件?strong>q个文g是你下载的iconv库的根目录下的Android.mk文gQ我再来截张图?br />
q个是文件中的俩句话Q你要和上边我说的改的那俩个地方对照h攏V好了其实就是这么简单,Android.mk文g只需要对照的改上俩个地方可以了Q程序中的那个头文g包含也要修改?/strong>现在我们来导入到工E中构徏一下工E吧。在构徏的时候也会出C个问题,我想q个问题的原因可能是因ؓiconv库里边实现的函数不一样吧Q出现的错误的语句是q句Q?br />
1
-1 == iconv(iconvH, pin, &strLength, &outbuf, &outLength)

我们需要做如下的修改,是在pin的前边加个强转,因ؓAndroid下函数需要传入的参数是char**Q而我们程序中的pin是const char **cd的?br />

1
-1 == iconv(iconvH, (char **)pin, &strLength, &outbuf, &outLength)

有了以上的这些操作问题就解决了,q里提醒一下大Ӟ在eclipse中构建工E的时候如果可以编译通过了,但是工程中有错误提示Q其实是没有错误的,也不知道q个eclipse是怎么回事Q,大家重新导入工E一遍,问题p决了Q还有什么问题就l我留言吧?br />本帖有小塔原创,转蝲h明出处!

android 下添加iconv支持

NDK自带的iconv?查看 android-ndk-r9d/sources/android/support/include/iconv.h

在Android.mk中加?/span>
LOCAL_WHOLE_STATIC_LIBRARIES += android_support

$(call import-module,android/support)


如:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := mylib.cpp

LOCAL_WHOLE_STATIC_LIBRARIES += android_support
LOCAL_CXXFLAGS += -std=c++11 -fexceptions


include $(BUILD_SHARED_LIBRARY)
$(call import-module, android/support)


多彩人生 2014-12-13 15:56 发表评论
]]>
如何在真Z调试Android应用E序http://www.shnenglu.com/colorful/archive/2014/12/12/209168.html多彩人生多彩人生Fri, 12 Dec 2014 07:49:00 GMThttp://www.shnenglu.com/colorful/archive/2014/12/12/209168.htmlhttp://www.shnenglu.com/colorful/comments/209168.htmlhttp://www.shnenglu.com/colorful/archive/2014/12/12/209168.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/209168.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/209168.html阅读全文

多彩人生 2014-12-12 15:49 发表评论
]]>
一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/AndroidQ?/title><link>http://www.shnenglu.com/colorful/archive/2014/10/15/208577.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Wed, 15 Oct 2014 07:35:00 GMT</pubDate><guid>http://www.shnenglu.com/colorful/archive/2014/10/15/208577.html</guid><wfw:comment>http://www.shnenglu.com/colorful/comments/208577.html</wfw:comment><comments>http://www.shnenglu.com/colorful/archive/2014/10/15/208577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/colorful/comments/commentRss/208577.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/colorful/services/trackbacks/208577.html</trackback:ping><description><![CDATA[<div>http://www.cnblogs.com/ShadowLoki/p/3679929.html</div><br /><div><span style="font-family: 仿宋;"> cocos2d-x 3.0发布有一D|间了Q作Z个初学者,我一直觉得cocos2d-x很坑。每个比较大的版本变动,都会有不一L目创徏方式Q每ơ的跨度都挺?#8230;…</span> <p><span style="font-family: 仿宋;">  但是凭心而论Q?.0RC版本开?环境搭徏、项目创建、编译的方式更加人性化了?/span></p> <p><span style="font-family: 仿宋;">  现在我们q入正题Q一步一步搭建cocos2dx的开发环?/span></p> <p><span style="font-family: 仿宋;">  </span></p> <p> </p> <p><span style="font-family: 仿宋;">  cocos2d-x很多tools都是需要用Python的,因此我们需要先安装Python环境</span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">  python下蝲:<a target="_blank">点这?/a></span></p> <p><span style="font-family: 仿宋;">    q里需要下载Python 2.X版本。曾l以下蝲3.x版本 后来装上发现cocos2d-x提供的pythonq行报错Q所以卸载以后重新装的python2.X版本</span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">  python安装的时候用默认安装方式即可,但是安装完毕后我们需要配|环境变?/span></p> <p><span style="font-family: 仿宋;">    在我的电脑(右键)->属?>高pȝ讄->高 选项?>环境变量->pȝ变量 中找到Path 变量Qƈ在其g增加 指向Python的环境变量。格式ؓ [Python安装路径]; 例如我安装在C?我的环境变量新增ؓ C:\Python27;</span></p> <p><span style="font-family: 仿宋;">    配置完毕后记得注销再重新登陆系l环境变量才会生?/span></p> <p><span style="font-family: 仿宋;">    <img src="http://images.cnitblog.com/i/340851/201404/221000491852327.jpg" alt="" /></span></p> <p> </p> <p><span style="font-family: 仿宋;">  下一步,我们要下载最新版本的cocos2d-xQ到目前为止 cocos2d-x已经更新?3.0rc2版本</span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">  cocos2d-x官网: <a target="_blank">点这?/a></span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">  在下载完毕后我们解压~到盘上,q打开cocos2d-x 文gҎ到setup.pyq个文gQ运行,会出现控制台如下</span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221004590454027.jpg" alt="" /></span></p> <p><span style="font-family: 仿宋;">  ׃现在不配|Android环境Q因此只需要一直回车即可,q时候这Dpython脚本会帮助我们设|cocos2d-xq行所需要的环境变量。l注销……重新登陆……</span></p> <p><span style="font-family: 仿宋;">  在配|完q一切后 我们打开CMD q行cocos命oQ?来检查整个开发环境是否搭建成功,2来可以熟悉下命o行,如果讄没问题的情况?会出现如下界?img src="http://images.cnitblog.com/i/340851/201404/221009223572717.jpg" alt="" /></span></p> <p><span style="font-family: 仿宋;">  q里我们可以看到cocos.pyq段脚本可以执行4个命令,每个命o的作用已l说明的很清楚了?/span></p> <p> </p> <p><span style="font-family: 仿宋;">  下面Q我们来使用new 命o创徏我们的项?/span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221013072633708.jpg" alt="" /></span></p> <p><span style="font-family: 仿宋;">  q里举个栗子Q比如我要创Z个叫simple的项目,我们可以q么? cocos new -p com.game.simple -l cpp -d e:\  simple 单吧 q行q条命o会在E盘根目录下生成一个叫simple的文件夹里面攄我们的项目?/span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221018046544285.jpg" alt="" /><img src="http://images.cnitblog.com/i/340851/201404/221018101701568.jpg" alt="" /></span></p> <p><span style="font-family: 仿宋;">  q个时候我们就可以用VS2012打开proj.win32中的SLN目文gq行我们愉快的编码和调试工作了?/span></p> <p> </p> <p><span style="font-family: 仿宋;">  如果我们要运行我们刚刚由模板生成的项目,我们需要用到cocos run 命o 格式?cocos run -p [q_]    栗如:cocos run -p win32 表示win32q_</span></p> <p><span style="font-family: 仿宋;">  我们在执行这条命令时候需要注意一?执行命o的目?必须是游戏项目的根目?如果不在根目?需要?-s指定游戏根目录的位置</span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">  现在我们在cmd中执?cocos run -p win32 -s e:\simple q行l果如下</span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221025052329629.jpg" alt="" /></span></p> <p><span style="font-family: 仿宋;">  如果在编译过E中没有错误的话 ~译完成会打开q个HelloWorld的DEMO</span></p> <p><span style="font-family: 仿宋;">  x在WIN32中的环境搭徏以及调试发布全部OK?下面我们来看Android部分?/span></p> <p><span style="font-family: 仿宋;">  </span><br /><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><strong>AndroidQ?/strong></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><strong> </strong><span style="color: #333333; font-size: 14px;"> Android的编译环境在3.0RC里也有了很大的改观,部v和编译方式比之前方便了很多。现在我们来做下准备工作?/span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  Android~译环境需要用到Andorid_SDK  Android_NDK   Ant 与JDK</span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  Android_SDK下蝲: <a target="_blank">点这?/a></span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  Android_NDK下蝲: <a target="_blank">点这?/a></span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  Android_JDK下蝲:  <a target="_blank">点这?/a></span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  Ant下蝲:        <a target="_blank"> 点这?/a></span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  </span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  其中除了JDK需要安装,其它的是l色?直接解压卛_</span></span></p> <p><span style="font-family: 仿宋;">    我们SDK NDK 和ANT解压~到同一个文件夹?q修改sdk的文件夹名ؓADTQNDK的NDKQANT的ؓANT q是Z方便以后使用?我解压后文g都放在了e:\Android文g夹下</span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221115282481382.jpg" alt="" /></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  </span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  解压完后我们先来配置JDK</span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">    在JDK安装完毕之后Q需要手动进行环境变量的配置</span></span></p> <p><span style="color: #ff6600; font-family: 仿宋; font-size: 16px;"><span style="color: #333333; font-size: 14px;">  </span></span></p> <p><span style="font-family: 仿宋;">     1Q在pȝ变量里新?span style="color: #339966;">JAVA_HOME</span>变量Q变量gؓQC:\Program Files\Java\jdk1.6.0_14Q根据自q安装路径填写Q?/span></p> <p><span style="font-family: 仿宋;">    2Q新?span style="color: #339966;">classpath</span>变量Q变量gؓQ?;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar Q注意前面的. 不要忘记了)</span></p> <p><span style="font-family: 仿宋;">    3Q在<span style="color: #339966;">path</span>变量Q已存在不用新徏Q添加变量|%JAVA_HOME%\bin;%JAVA_HOME%\jre\binQ注意变量g间用“;”隔开Q?/span></p> <p><span style="font-family: 仿宋;">    4、重新注销pȝq新登陆后 “开?#8221;-->“q行”-->输入“javac”-->"Enter"Q如果能正常打印用法说明配置成功Q?/span></p> <p><span style="font-family: 仿宋;">    补充环境变量的解?</span></p> <p><span style="font-family: 仿宋;"><span style="color: #339966;">      JAVA_HOME</span>:jdk的安装\?/span></p> <p> </p> <p><span style="font-family: 仿宋;"><span style="color: #339966;">      classpath</span>:java加蝲c\径,只有cdclasspath中java命o才能识别Q在路径前加了个"."表示当前路径?/span></p> <p> </p> <p><span style="font-family: 仿宋;"><span style="color: #339966;">      path</span>Q系l在M路径下都可以识别java,javac命o?/span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;"> </span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">   现在我们来配|ANT的环境变量。将[ANT目录]\bin文gҎ加到path?nbsp; 如图</span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221103495137416.jpg" alt="" /></span></p> <p> </p> <p><span style="font-family: 仿宋;">  x准备工作做完了Q下面我们运行setup.py兌SDK NDK 和ANT</span></p> <p> </p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221116141233733.jpg" alt="" /></span></p> <p><span style="font-family: 仿宋;">  在这里我们输入了ndk和sdk的\?其中ndk指向根目录即?nbsp; 而sdk需要指向adt中的sdk目录</span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">  在由setup.pyd了这两个环境变量之后 会要求我们输入Ant的\?q里我们需要指向ant中的bin文g?如下Q?/span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221119256852276.jpg" alt="" /></span></p> <p><span style="font-family: 仿宋;">  q时?基本环境已经搭徏完成了,记得注销重新登陆使环境变量生?/span></p> <p><span style="font-family: 仿宋;">   重新q行setup.py认下所有的配置是否正确 如果全部正确 如图所C?/span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221130314046395.jpg" alt="" /></span></p> <p> </p> <p><span style="font-family: 仿宋;">  然后我们可以在目目录下?cocos compile -p android方式~译APK文g?/span></p> <p><span style="font-family: 仿宋;">  </span></p> <p><span style="font-family: 仿宋;">  注意Q在打包apk之前需要修改proj.android/jni文g夹下的Android.mk文g d自己新增的CPP文g</span></p> <p> </p> <p><span style="font-family: 仿宋;">  最后我们来看看~译好的APK文g吧,位置在[目文g夹]\bin\debug\android\文g夹下</span></p> <p><span style="font-family: 仿宋;">  <img src="http://images.cnitblog.com/i/340851/201404/221328207632968.jpg" alt="" /></span></p></div><img src ="http://www.shnenglu.com/colorful/aggbug/208577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/colorful/" target="_blank">多彩人生</a> 2014-10-15 15:35 <a href="http://www.shnenglu.com/colorful/archive/2014/10/15/208577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cocos2dx3.2http://www.shnenglu.com/colorful/archive/2014/08/20/208073.html多彩人生多彩人生Wed, 20 Aug 2014 13:45:00 GMThttp://www.shnenglu.com/colorful/archive/2014/08/20/208073.htmlhttp://www.shnenglu.com/colorful/comments/208073.htmlhttp://www.shnenglu.com/colorful/archive/2014/08/20/208073.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/208073.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/208073.htmlcocos new

~译so文g
cocos compile -p android

多彩人生 2014-08-20 21:45 发表评论
]]>
cocos2d-x-2.2.2 android开发环?/title><link>http://www.shnenglu.com/colorful/archive/2014/07/24/207784.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Thu, 24 Jul 2014 09:55:00 GMT</pubDate><guid>http://www.shnenglu.com/colorful/archive/2014/07/24/207784.html</guid><wfw:comment>http://www.shnenglu.com/colorful/comments/207784.html</wfw:comment><comments>http://www.shnenglu.com/colorful/archive/2014/07/24/207784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/colorful/comments/commentRss/207784.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/colorful/services/trackbacks/207784.html</trackback:ping><description><![CDATA[<div>一、准?br />1. adt-bundle(包括了eclipse+sdk)<br />2. ndk: r9版本以上, 无需安装cygwinQ新版本ndk不再依赖该编译环?br />3. cocos2d-x-2.2.2<br />4. jdk<br /><br />?nbsp; 安装<br />1 安装jdkQ配|java环境<br />JAVA_HOMEQD:\Andorid\Java\jdk1.7.0_25Q安装\径)<br />CLASSPATHQ?;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;<br />PathQ?JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;<br />q行 java -version<br />     javac<br />是否安装成?br /><br />2 解压cocos2dx, 安装cocos2dx, cmd到cocos2dx目录下,q行build-win32.bat<br /><br />3 配置 eclipse<br />  打开eclipseQ点击window->perfernces->AndroidQ?br />  在SDK Location中填上刚刚下的adt-bundle解压后的D:\Andorid\adt\sdk<br />  window->perfernces->Android->NDK中填ndk路径 D:\Andorid\android-ndk-r9Q自q解压路径Q?br />  <br />导入android目<br /> 目属?>c/c++ build->Builder Settings->Bild command:填写ndk路径\ndk-build.cmd<br /> 目属?>c/c++ build->Environment d变量 NDK_MODULE_PATH    cocos2dx目录;cocos2dx目录\cocos2dx\platform\third_party\android\prebuilt</div><img src ="http://www.shnenglu.com/colorful/aggbug/207784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/colorful/" target="_blank">多彩人生</a> 2014-07-24 17:55 <a href="http://www.shnenglu.com/colorful/archive/2014/07/24/207784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdk与jre的区?/title><link>http://www.shnenglu.com/colorful/archive/2014/07/24/207783.html</link><dc:creator>多彩人生</dc:creator><author>多彩人生</author><pubDate>Thu, 24 Jul 2014 09:53:00 GMT</pubDate><guid>http://www.shnenglu.com/colorful/archive/2014/07/24/207783.html</guid><wfw:comment>http://www.shnenglu.com/colorful/comments/207783.html</wfw:comment><comments>http://www.shnenglu.com/colorful/archive/2014/07/24/207783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/colorful/comments/commentRss/207783.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/colorful/services/trackbacks/207783.html</trackback:ping><description><![CDATA[<div><div>http://www.cnblogs.com/myitm/archive/2011/05/03/2035942.html</div><br />很多E序员已l干了一D|间java了依然不明白jdk与jre的区别?br />JDK是Java Development Kit.单的说JDK是面向开发h员用的SDKQ它提供了Java的开发环境和q行环境。SDK是Software Development Kit 一般指软g开发包Q可以包括函数库、编译程序等?br />JRE是Java Runtime Enviroment是指Java的运行环境,是面向JavaE序的用者,而不是开发者?br />?果安装了JDKQ会发同你的电脑有两套JREQ一套位?\jre 另外一套位?C:\Program Files\Java\jre1.5.0_15 目录下,后面q套比前面那套少了Server端的Java虚拟机,不过直接前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK?以选择是否安装q个位于 C:\Program Files\Java 目录下的JRE。如果你只安装JREQ而不是JDKQ那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE?br />JRE的地位就象一台PCZP我们写好的Win32应用E序需?操作pȝ帮我们运行,同样的,我们~写的JavaE序也必要JRE才能q行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JREQ?那么你可以想象你的电脑有两台虚拟的Java PC机,都具有运行JavaE序的功能。所以我们可以说Q只要你的电脑安装了JREQ就可以正确q行Java应用E序?br />1、ؓ什么Sun要让JDK安装两套相同的JREQ?br />q?是因为JDK里面有很多用Java所~写的开发工P如javac.exe、jar.exe{)Q而且都放|在 \lib\tools.jar 里。从下面例子可以看出Q先tools.jar改名为tools1.jarQ然后运行javac.exeQ显C如下结果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main q个意思是_你输入javac.exe与输?java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一LQ会得到相同的结果。从q里我们可以证明javac.exe只是一个包装器QWrapperQ,而制作的目的是ؓ了让开发者免于输入太长的指命?而且可以发现\lib目录下的E序都很,不大? 9KQ从q里我们可以得出一个结论。就是JDK里的工具几乎是用Java所~写Q所以也是Java应用E序Q因此要使用JDK所附的工具来开发JavaE?序,也必要自行附一套JRE才行Q所以位于C:\Program Files\Java目录下的那套JRE是用来q行一般JavaE序用的?br />2、如果一台电脑安装两套以上的JREQ谁来决定呢Q?br />q?个重大Q务就落在java.exew上。Java.exe的工作就是找到合适的JRE来运行JavaE序? Java.exe依照底下的顺序来查找JREQ自q目录下有没有JREQ父目录有没有JREQ查询注册表Q? [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的运行结果与你的电脑里面哪个JRE被执行有很大的关pR?br /><br />ADDQ(小l)<br />1.JVM -- java virtual machineJVM是我们常说的java虚拟机,它是整个java实现跨^台的最核心的部分,所有的javaE序会首先被~译?class的类?Ӟq种cL件可以在虚拟Z执行Q也是说classq不直接与机器的操作pȝ相对应,而是l过虚拟机间接与操作pȝ交互Q由虚拟机将E序解释l本地系 l执行?.JRE -- java runtime environmentJRE是指javaq行环境。光有JVMq不能成class的执行,因ؓ在解释class的时候JVM需要调用解释所需要的cd lib。在JDK的安装目录里你可以找到jre目录Q里面有两个文g夹bin和lib,在这里可以认为bin里的是jvmQlib中则是jvm工作所需 要的cdQ而jvm? lib和v来就UCؓjre。所以,在你写完javaE序~译?class之后Q你可以把这?class文g和jre一h包发l朋友,q样你的朋友?可以q行你写E序了。(jre里有q行.class的java.exeQ?.JDK -- java development kitJDK是java开发工具包Q基本上每个学java的h都会先在机器上装一个JDKQ那他都包含哪几部分呢?让我们看一下JDK的安装目录。在目录 下面有六个文件夹、一个srccd源码压羃包、和其他几个声明文g。其中,真正在运行java时v作用的是以下四个文g夹:bin、include?lib? jre。现在我们可以看样一个关p,JDK包含JREQ而JRE包含JVM。bin:最主要的是~译?(javac.exe)include:java和JVM交互用的头文件libQ类库jre:javaq行环境Q注意:q里的bin、lib文g夹和 jre里的bin、lib是不同的Qȝ来说JDK是用于javaE序的开?而jre则是只能q行class而没有编译的功能?br />eclipse、idea{其他IDE有自q~译器而不是用JDK bin目录中自带的Q所以在安装时你会发C们只要求你选中jre路径ok了?/div><img src ="http://www.shnenglu.com/colorful/aggbug/207783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/colorful/" target="_blank">多彩人生</a> 2014-07-24 17:53 <a href="http://www.shnenglu.com/colorful/archive/2014/07/24/207783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自定义\径创建Cocos2d-x目http://www.shnenglu.com/colorful/archive/2014/06/04/207189.html多彩人生多彩人生Wed, 04 Jun 2014 08:09:00 GMThttp://www.shnenglu.com/colorful/archive/2014/06/04/207189.htmlhttp://www.shnenglu.com/colorful/comments/207189.htmlhttp://www.shnenglu.com/colorful/archive/2014/06/04/207189.html#Feedback0http://www.shnenglu.com/colorful/comments/commentRss/207189.htmlhttp://www.shnenglu.com/colorful/services/trackbacks/207189.htmlhttp://www.cnblogs.com/skynet/archive/2013/11/17/3428369.html

--------------------------------------------------

自定义\径创?/span>Cocos2d-x

本文介绍windows下面如何优雅的创?/span>Cocos2d-x目。ؓ何称之ؓ优雅Q是因ؓ现在|上传的一些创建方法有一些问题。大致内容如下:

使用VS向导创徏Cocos2d-x目Q废弃,不徏议用)

使用create_project.py

问题1Q工E名{替换不完全

问题2Q创建项目不能指定\?/span>

使用VS向导创徏Cocos2d-x目Q废弃,不徏议用)

?/span>Cocos2d-x 2.1.3及之?/span>Q?/span>官方使用“install-template-msvc.bat”文gQ安?/span>VS创徏Cocos2d-x目向导Q然后可以按照向导创?/span>Cocos2d-x目?/span>注意Q?/span>默认情况下,新徏目的存攄位置应该讄?/span>Cocos2d-x引擎的安装目录下面,否则可能因ؓ找不到库文g而不能通过~译。不q可以在讄目属性,头文件和库文件的搜烦路径来解冟뀂可以参考我之前的一博文?/span>C++静态库与动态库》,里面介绍如何讄vs目属性用静态库和动态库?/span>

?/span>Cocos2d-x 2.1.4Q官方徏议?#8220;create_project.py”来创?/span>Cocos2d-x目Qƈ在版本废弃?/span>“install-template-msvc.bat”?/span>

We recommend you use multi-platform creating tools named create_project.py, which lies in tools/project-creator, to create a new project. This tool can create a project has the same folder structure as HelloCpp. Other tools such as create-android-project.sh will be removed in future.

Note: VS template was deprecated in this release, please use 'tools/project-creator' instead.

——来自官网Q?/span>http://goo.gl/yVAjMr

我入?/span>Cocos2d-x的时候,刚发?/span>Cocos2d-x 2.1.4Q就被这个坑了?/span>Cocos2d-x 2.1.4废弃?/span>“install-template-msvc.bat”Q但是下载压~包里面又有Q可恶的是不能用的,各种报错。同时网上流传的是使用q种ҎQ让我绕了不\?/span>

使用create_project.py

create_project.pyQ?/span>cocos2d-x/tools/project-creator/目录下)使用Ҏ比较单:

Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE

Options:

 ?/span>-project   PROJECT_NAME?/span>Project name, for example: MyGame

 ?/span>-package   PACKAGE_NAME?/span>Package name, for example: com.MyCompany.MyAwesomeGame

 ?/span>-language PROGRAMING_LANGUAGE?/span>Major programing lanauge you want to used, should be [cpp | lua | javascript]

Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame

Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame –language javascript

注意Q?/span>

官方python使用2.7.3

安装python之后需要设|环境变量,或者用该脚本时指?/span>python路径Q如C:\python27\python.exe create_project.py …

使用该方法创建项目之后,目位于cocos2d-x/projects目录下面?/span>windowsq_q入proj.win32Q打开工程文g卛_?/span>

使用create_project.py创徏目的原理,即简单地?/span>cocos2d-x\template目录下的三种语言模板multi-platform-cpp?/span>multi-platform-lua?/span>multi-platform-js复制到对应的新徏工程目录下,然后?/span>PROJECT_NAME?/span>PACKAGE_NAME替换模板中的HelloCpp/ HelloLua/ HelloJavascript?/span>

问题1Q工E名{替换不完全

下面是我?/span>towergame做ؓ工程名创建的lua目Q目录如下:

clip_image001[4]

虽然可以正常~译Q但发现工程名未替换?/span>towergameQ这比较坑爹。一位日本开发?/span>lettas已经有h提交了修复请?/span>https://github.com/cocos2d/cocos2d-x/pull/3943Q不q正式发布的版本中还没有修改。急着用可以去github checkout下来用?/span>

问题2Q创建项目不能指定\?/span>

使用create_project.py不能自定义\径,必须攑֜cocos2d-x/projects目录下面Q?strong>q个讑֮我认为非怸合理Q这样将自己的项目放?/span>cocos2d-x引擎目录中,不方便管理,卛_与项目耦合C起了Q如?/span>cocos2d-x升也不方便?/span>

比较合理的方案是Q?/span>

cocos2d-x独立安装Q这样对cocos2d-x升也相对简单?/span>

新徏cocos2d-x目独立?/span>cocos2d-x安装路径。通过讄搜烦或引用\径,让项目能够找?/span>cocos2d-x安装路径?/span>

q运的是Q完全可以做到这栗熟?/span>VS的同学应该知道,VS工程讄是支?/span>环境变量的。通过下面的一些改造,可以让新建的cocos2d-x目独立?/span>cocos2d-x引擎目录Q?/span>

1)     通过create_project.py创徏的项目剪切到你希望放|的目录Q?/span>

2)     创徏环境变量COCOS2DX_HOMEQ指?/span>cocos2d-x安装目录Q?/span>

3)     ?/span>*.sln文g使用文本方式打开Q?strong>里面的所有相对\?/strong>“..\..\..”都替换ؓ环境变量%COCOS2DX_HOME%Q如“..\..\..\cocos2dx\proj.win32\cocos2d.vcxproj”替换?/span>“%COCOS2DX_HOME%\cocos2dx\proj.win32\cocos2d.vcxproj”Q?/span>

4)     ?/span>*.vcxproj文g使用文本方式打开Q将里面debug?/span>release 2U模式下<AdditionalIncludeDirectories>节点定义的引用\径中包含”$(ProjectDir)..\..\..\”都替换ؓ环境变量“$(COCOS2DX_HOME)\”Q注意这里用环境变量的方式?/span>*.sln中不一P?/span>$(COCOS2DX_HOME)而非%COCOS2DX_HOME%?/span>

xQ大工告成!看下面的q行h?/span>vs工程Q?/span>

clip_image003[4]

图中依赖的工E跟新建的目攑֜cocos2d-x/projects目录下面一样可以链接到?/span>

上面的替换工作可以用文本的查找替换功能,可以L搞定。但是ؓ了能够与create_project.py集成Q我提供下面一D代码能够自动替?/span>.sln?/span>.vcxproj文g中对于内容:

 #!/usr/bin/python   

复制代码
#-*- encoding:utf-8 -*-   

import sys, os

def checkOption():
    argLen = len(sys.argv)
    targetPath = "./"
    if argLen == 2:
        targetPath = sys.argv[1]
        if not targetPath.endswith("/"):
            targetPath += "/"
    return targetPath
    
def replaceCocos2dxPath(path):
    filelists = os.listdir(path)
    for item in filelists:
        suffix = (os.path.splitext(item))[1]
        print(suffix)
        if suffix == ".sln":
            print('replace "..\..\..\" with %COCOS2DX_HOME% in *.sln')
            #replace "..\..\..\" with %COCOS2DX_HOME% in *.sln 
            content = open(path + item, 'r').read().replace("..\\..\\..\\""%COCOS2DX_HOME%\\")
            file = open(path + item, 'w')
            file.write(content)
            file.close()
        if suffix == ".vcxproj":
            print('replace "$(ProjectDir)..\..\..\" with $(COCOS2DX_HOME)\ in *.vcxproj')
            #replace "$(ProjectDir)..\..\..\" with $(COCOS2DX_HOME)\ in *.vcxproj
            content = open(path + item, 'r').read().replace("$(ProjectDir)..\\..\\..\\""$(COCOS2DX_HOME)\\")
            file = open(path + item, 'w')
            file.write(content)
            file.close()

if  __name__ == '__main__':
    targetPath = checkOption()
    replaceCocos2dxPath(targetPath)
复制代码


多彩人生 2014-06-04 16:09 发表评论
]]>
鶹ŷۺϾþ| þþþþϸ| 97Ʒ˾þô߽app| ˾þþþƷ| ŷҹͽþþ| ˺ݺۺϾþ88| þþƷƷ޾Ʒ| һɫۺϾþ| þۺϾɫۺ97_þþ| ݺɫþۺ_| þþƷվ| þAVij| ĻƷѾþþ| ޾Ʒþþþ66| þһѲ| ۺϾþþ| ޹Ʒþþѿ| þAV| þ91Ʒþ91ۺ| ޾Ʒһþþ | þþƷ9988| þҹҹݺ| þAV뾫Ʒ| ŷպĻþ| ޾þþһ| þþƷAV| һŮȫƾþƬ | 97Ƶþþ| һaƬþëƬ| ŷպ˾Ʒþþѿ| Ʒþþþ龫Ʒ| 91ƷѾþþþþþþ| ƷþþþӰӲ| 69þҹɫƷ69| þþһƷ99þþƷ66 | þþžѸƵ| ƷþƷ| ۺϾþü| þþWWW| һɫþ88ۺպƷ | 99999þþþþ|