2016年9月29日 星期四

0929 安裝pomelo

1. 安裝 Node
下載網頁  https://nodejs.org/en/download/
下載檔案  node-v6.7.0-x64.msi
執行安裝
安裝完畢 可以控制台cmd 下執行  node -v  
如有版本就是安裝完畢了

2.安装component
在CMD 輸入
npm install -g component 
別忘了參數-g,表示全局安裝,這樣你在cmd任何路徑下都可以使用componen
驗證
 component -V  

3.安装pomelo
npm install -g pomelo 
驗證
pomelo --version 

4.创建pomelo_demo
mkdir HelloWorld
cd HelloWorld 
pomelo init

然後驗證 gameserver 是否正常

執行
npm-install.bat  

進行安裝完畢後,cmd會自動切換到game-server 目錄下,我們接著執行:
pomelo start  

如果不出錯的話,我們就可以看到game-server運行起來了,接著我們可以用ctrl+c來殺死服務器進程

接著將cmd目錄切換至web-server下,執行:
bin\component.bat  

如果出現錯誤訊息 請手動執行 指令
component install
component build

等待執行完畢後,我們的Demo基本就弄好了

5.開始伺服器

game-server目錄運行  pomelo start  
web-server目錄下運行 node app   

一切順利的話我們就可以打開瀏覽器訪問:http://127.0.0.1:3001/index.html 
點擊Test Game Server按鈕就會彈出一個對話框顯示 gameserver is ok



2016年9月26日 星期一

0926 libpomelo2加入cocos2d-x项目(Windows、Android、IOS平台)

http://www.bozhiyue.com/anroid/wenzhang/2016/0506/65160.html

手把手教你把libpomelo 2 加入cocos2d-x项目(Windows、Android、IOS平台).修訂版本


Windows平台

===================================================
1.下載libpomole2 (暫定安裝於cocos2d\external)
git clone https://github.com/NetEase/libpomelo2.git

1.5  Install gyp(如果已經安裝 就忽略此步驟)
git clone https://chromium.googlesource.com/external/gyp 
cd gyp python setup.py install

安裝完畢

2.  進入libpomole2目錄 執行下面指令(依據gyp安裝目錄不同 下面指令需要做一些變更)
D:\Task\gyp\gyp.bat --dept
h=. pomelo.gyp -Dlibrary=static_library -Duse_sys_openssl=false -DTo=pc

目錄下產生 libpomelo2.vcxproj 就是安裝完成

安裝選項範例

gyp

?
1
$ gyp --depth=. pomelo.gyp [options]

选项

  • -Dno_tls_support=[true | false], false by default
  • -Duse_sys_openssl=[true | false], true by default
  • -Dno_uv_support=[true | false], false by default
  • -Duse_sys_uv=[true | false], false by default
  • -Duse_sys_jansson=[true | false], false by default
  • -Dpomelo_library=[static_library | shared_library], static_library by default
  • -Dbuild_pypomelo=[true | false], false by default.
  • -Dpython_header=, /usr/include/python2.7 by default.
  • -Dbuild_jpomelo=[true|false], false by default.
  • -Dbuild_cspomelo=[true|false], false by default.
  • }
3.
修改deps/uv/vcbuild.bat
line 93 附近 將ˇgyp 的GIT 來源改為 https://chromium.googlesource.com/external/gyp
執行 vcbuild.bat
產生 libuv.vcxproj 表示完成
因為libpomelo2  已經將jansson 移除 所以看不到此目錄

4.新增現有專案至自己專案中
再自己專案點選滑鼠右鍵
選擇加入 加入現有專案 libuv,libpomelo2,openssl 三個
並且在自己專案 增加專案相依性

4.5 增加lib 路徑
VC++=>程式庫目錄
增加lib 指定目錄 $(SolutionDir)Default\lib



5.增加相關include
$(EngineRoot)external\libpomelo\include
$(EngineRoot)external\libpomelo\deps\uv\include

6.添加系统lib引用Psapi.lib;Iphlpapi.lib; libuv.lib;libpomelo2.lib;openssl.lib;






================================================================
操作系统:Windows7(64-bit)
VS版本:2013
Cocos2d-x版本:3.0
工程路径:E:\cocos2d-prj\

1.从github下载libpomelo代码
E:\cocos2d-prj\cocos2d\external> git clone https://github.com/NetEase/libpomelo.git

2.创建libpomelo的VS工程
E:\cocos2d-prj\cocos2d\external>cd libpomelo
E:\cocos2d-prj\cocos2d\external\libpomelo>mkdir build
//路徑改為這一個 20160926 修正
git clone https://chromium.googlesource.com/external/gyp build/gyp
E:\cocos2d-prj\cocos2d\external\libpomelo>git clone https://github.com/martine/gyp.git build/gyp
E:\cocos2d-prj\cocos2d\external\libpomelo>build\gyp\gyp.bat --depth=. pomelo.gyp -Dlibrary=static_library -DTO=pc


如果遇到报错(一个VS版本问题)
修改E:\snake\code\client\libpomelo\build\gyp\pylib\gyp\MSVSVersion.py文件第188行
return versions[str(name)]
改为
return versions[“2010”]
修改后继续执行脚本
E:\cocos2d-prj\cocos2d\external\libpomelo>build\gyp\gyp.bat --depth=. pomelo.gyp -Dlibrary=static_library -DTO=pc 

3.创建libuv的VS工程(执行E:\cocos2d-prj\libpomelo\deps\uv\vcbuild.bat脚本即可)
E:\cocos2d-prj\cocos2d\external>cd libpomelo\deps\uv
E:\cocos2d-prj\cocos2d\external\libpomelo\deps\uv>vcbuild.bat

4.打开cocos2d工程,将下列vs项目加入工程(add existing project)
E:\cocos2d-prj\cocos2d\external\libpomelo\libpomelo.vcxproj
E:\cocos2d-prj\cocos2d\external\libpomelo\deps\jansson\jansson.vcxproj
E:\cocos2d-prj\cocos2d\external\libpomelo\deps\uv\libuv.vcxproj

5.修改工程版本
vs中右键上述工程,选择菜单 Upgrade VC++ Compiler and Libraries
6.添加工程依赖
在cocos2d-prj工程上邮件,选择 属性 菜单项,将上述三个工程添加为依赖,如下图
7.添加Include
8.添加系统lib引用Psapi.lib;Iphlpapi.lib;,如下图

Android平台

操作系统:Windows7(64-bit)
NDK版本:r9d (64-bit)
Cocos2d-x版本:3.0
工程路径:E:\cocos2d-prj\
Android平台相对简单,只要修改E:\cocos2d-prj\proj.android\jni\Android.mk文件就可以了,总共三处如下图
修正:若是添加libpomelo2 需修改如下部分
檔案一 cocos2d\external\libpomelo2\Android.mk
1.LOCAL_MODULE_FILENAME := libpomelo2
2.LOCAL_SRC_FILES 
    增加 src/tr/uv/pb_i.c \ 
             src/tr/uv/pr_msg_json.c \
    移除 src/tr/uv/pr_unit.c

檔案二 proj.android-studio\app\jni\Android.mk
1. $(call import-module,libpomelo2) 非 libpomelo
2. LOCAL_STATIC_LIBRARIES += pomelo_static
3. LOCAL_EXPORT_C_INCLUDES :=$(LOCAL_PATH)/../../../cocosd/external/libpomelo2/include



IOS平台

操作系统:MAC MINI
XCODE版本:3.1.1
iphonesimulator : 6.1
Cocos2d-x版本:3.0
Python : 2.7
gyp工具
1.创建xcode工程,执行以下命令
cd pomelo
gyp --depth=. pomelo.gyp -Dlibrary=static_library -DTO=ios
cd deps/uv
gyp --depth=. uv.gyp -Dlibrary=static_library -DTO=ios
cd ../jansson
gyp --depth=. jansson.gyp -Dlibrary=static_library -DTO=ios

2.生成静态库
cd pomelo

xcodebuild -project deps/jansson/jansson.xcodeproj
xcodebuild -project deps/uv/uv.xcodeproj
xcodebuild -project pomelo.xcodeproj

xcodebuild -project deps/jansson/jansson.xcodeproj -sdk iphonesimulator6.1 -arch i386
xcodebuild -project deps/uv/uv.xcodeproj -sdk iphonesimulator6.1 -arch i386
xcodebuild -project pomelo.xcodeproj -sdk iphonesimulator6.1 -arch i386

3.用lipo把两个打包在一起
cd pomelo

lipo -create ./build/Default-iphoneos/libpomelo.a  ./build/Default-iphonesimulator/libpomelo.a  -output libpomelo.a
lipo -create ./deps/jansson/build/Default-iphoneos/libjansson.a ./deps/jansson/build/Default-iphonesimulator/libjansson.a  -output libjansson.a
lipo -create ./deps/uv/build/Default-iphoneos/libuv.a ./deps/uv/build/Default-iphonesimulator/libuv.a  -output libuv.a

4.修改xcode工程 
在xcode中打开cocos2d-x 项目,在项目target “Build Phases"将生成的3个 .a 静态库文件加入到 "Link Binary With Libraries" 里;
在"Build Settings" 的 “Header Search Paths” 里加入三个目录:
libpomelo/include
libpomelo/deps/jansson/src
libpomelo/deps/uv/include
注意目录的绝对和相对位置
这样就可以同时在真机和模拟器里调用libpomelo静态库了。



2016年9月21日 星期三

0921 Cocos2d-x移植到Android平台之Android-stuido

1.特別提醒: cocos2d-x v3.12 需搭配NDK 版本為 11版以前
用12版會無法完成編譯

2. setup.py 雖然可以設定路徑,但是NDK_ROOT 還是要自己手動到windows 的環境設定設定
3.注意指定的lib 大小寫
App\jni\Android.mk 裡面指定的
LOCAL_MODULE_FILENAME := libSlotGame
一定要小寫開頭

4. App\AndroidManifest.xml 不能加上lib
<meta-data android:name="android.app.lib_name" android:value="SlotGame" />
5. 可以用Android studio 中的build->Analiz APP 分析APP確認是否有產生Instant run.ZIP 在APP中  也可以從參考下方關閉

Disable Instant Run

To disable Instant Run:

  1. Open the Settings or Preferences dialog.
  2. Navigate to Build, Execution, Deployment > Instant Run.
  3. Uncheck the box next to Enable Instant Run.
如何将cocos2d-x的项目移植到Android平台之Android studio。--------------------------------------------  
首先我们需要搭建环境,以及配置环境变量:因为本文章针对的是将项目移植到Android studio,所以我相信看这篇文章的人应该都已经将java环境,cocos2d-x,Android studio,Android sdk,Android ndk ,ANT都下载安装并配置好了。 如果你没有配置好java环境的话,可以自行百度一下下,如果你没有下载好的话,请到cocos商店里面下载在cocos商店的工具中,就能找到你需要的东西 这些东西都准备好了之后就开始配置移植Android的环境变量环境变量。


















右键计算机,打开属性,点击高级系统设置,然后点击环境变量。
 
如果你之前配置过环境的话,希望你仔细和我配置的对照一下,哪里有错误;如果没有的话,就在用户变量那里点击新建 变量名:ANDROID_SDK_ROOT  
变量值:C:\android-sdk-windows(这里写你sdk的根目录,不要在后面加上什么platform之类的,就是根目录!)
变量名:NDK_ROOT  
变量值:C:\\android-ndk-r10d(这里写你ndk的根目录,注意我上面的两个\\ 目前我还不清楚为什么,但是在Android studio中如果不加上这个的话,就会报错) 然后在Path中添加sdk和ndk的变量值就好了,记得末尾加上分号;同时注意不要是拼音的分号。  
接下来就是关键中的关键了,网上有很多很多将cocos项目移植到Android平台的文章,但是都是针对eclipse的,而现在由于Android平台越来越多的人开始使用Android studio,所以我们肯定要学会如何将cocos项目发布到Android studio。话不多说,开始移植!  
1.首先新建一个cocos2d-x的项目,打开命令提示符,输入cocos new HelloWorld -l cpp 然后回车  
将新建的项目用vs打开看是否能够跑起来,如果能够跑起来的话,就可以进入下一步了。  
2.打开新建的项目进入proj.android-studio 打开进入app\jni目录下面有一个Android.mk的文件,打开这个文件  
因为现在并没有写自己的cpp文件,所以这里不需要添加,如果你是在vs上写完了代码再过来发布的话,就需要你在这里添加你写的cpp文件的路径,按照这个文件的格式添加进去就好了。这里我们不做任何操作。  
3.如果你看过移植到eclipse的教程,你会知道我们需要将C:\cocos2d-x-3.8\cocos\platform\android\java\src\org\cocos2dx\lib中的文件复制到C:\cocos2d-x-3.8\code\HelloWorld\proj.android\src\org\cocos2dx。但是在如果是移植到Android-stuido中的话就不需要这一步!!!!!不需要!!!!!不需要!!!!  
4.接下来你需要做的事情是什么:在你的项目的proj.android-studio下打开命令行,然后输入 cocos compile -p android --android-studio![接下来就可以等待编译了,需要等待一段时间]
 
5.最终如果编译没有错误的话,会出现如下图片

但是基本上很多人第一次都会出现各种各样的问题,我觉得绝大多数的原因都是因为环境没有配置好,或者你的sdk版本未下载或者是build-tools版本没有对应又或者是gradle没有下载(**当然此时编译器会自动去帮你下载,但是如果你没有翻墙的话,是下载不了的,不会翻墙的朋友请自行百度,这里就不多说了**)  
6.最后一步,在Android-studio中导入项目,然后在手机上运行,下面是运行效果

最后总结一下吧,cocos也在不断的完善当中,之前版本中新建项目里面是没有proj.android-studio这一项的,但是现在有了,既然有了,肯定就能用。

2016年9月19日 星期一

如何用android stduio 編譯cocos2d-x 專案

1.进入创建的项目的 proj.android-studio目录
cd proj.android-studio

2.执行
cocos2d-x-3.7/tools/cocos2d-console/bin/cocos compile -p android --android-studio

3.等待编译成功
将proj.android-studio 导入到android studio 就可以了. 

===========================================
若出現環境變數沒有定義錯誤 
執行cocos2d-x 目錄下的setup.py
設定各個變數位置
下圖是網路上範例


其中ANDROID_SDK _ROOT 可以從Android stduio 的設定中取得
File->Project Structure 

NDK_ROOT 
需要自己手動從windows 的管理員 的環境設定 中 去做設定
android-ndk-r12b-windows-x86_64.zip 解壓縮後放置的目錄

ANT_ROOT
 是apache-ant-1.9.7-bin.zip 解壓縮後的 目錄中的bin 

2016年9月13日 星期二

cocos2d-x 利用XML 解決中文亂碼問題

在使用cocos2dx 的label標籤做菜單時候,想給菜單中文名稱,但是運行後出現的是亂碼問題,這個問題在cocos2dx的版本都存在。解決此類問題最直接的方法是使用圖片菜單來解決,當然我們這次是非要用label文字來解決。
中文亂碼測試代碼:
01 //創建label標籤菜單
02 auto label_gameplay = LabelTTF::create("開始遊戲""fonts/Marker Felt.ttf", 24);  
03 auto label_gameset = LabelTTF::create("遊戲設置""fonts/Marker Felt.ttf", 24);  
04 auto label_gamequit= LabelTTF::create("退出遊戲""fonts/Marker Felt.ttf", 24);
05 //設置菜單坐標位置
06   label_gameplay->setPosition(Vec2(origin.x + visibleSize.width/2,
07                           origin.y + visibleSize.height/2+100));
08   label_gameset->setPosition(Vec2(origin.x + visibleSize.width/2,
09    origin.y + label_gameplay->getPositionY()-50));
10   label_gamequit->setPosition(Vec2(origin.x + visibleSize.width/2,
11    origin.y + label_gameset->getPositionY()-50));
12   //添加進圖層
13   this->addChild(label_gameplay);
14   this->addChild(label_gameset);
15   this->addChild(label_gamequit);
使用此代碼運行後,就會看到我們所謂的亂碼界面了。
解決cocos2dx在Windows平台中文亂碼問題

下面我們就使用讀取xml配置文件的方式來解決此問題。首先我們在我們的資源目錄Resources裡創建一個xml文件,我們把它命名為「zhongwen.xml」。然後按照一定的格式寫入數據。
xml文件代碼案例:
01<?xml version="1.0" encoding="utf-8"?>
02<plist version="1.0">  
03<dict>  
04 <key>gameplay</key>  
05  <string>開始遊戲</string>
06 <key>gameset</key>  
07  <string>遊戲設置</string>
08 <key>gamequit</key>  
09  <string>退出遊戲</string>
10</dict>  
11</plist>
使用xml鍵值對的形式來存儲我們的遊戲文字,這樣我們讀取相應的key鍵就可以得到我們想要的value值。
我們用cocos2dx給出的Dictionary這個類提供的方法來操作。
1、首先加載我們的xml配置文件。
1Dictionary *strings = Dictionary::createWithContentsOfFile("zhongwen.xml");
2//加載xml文件
2、然後查找xml文件的key鍵
1 const char *gameplay=((String*)strings->objectForKey("gameplay"))->getCString(); //查找xml文件key值
2 const char *gameset=((String*)strings->objectForKey("gameset"))->getCString(); //查找xml文件key值
3 const char *gamequit=((String*)strings->objectForKey("gamequit"))->getCString(); //查找xml文件key值
3、label標籤實現中文匹配
1 auto label_gameplay= LabelTTF::create(gameplay,"fonts/Marker Felt.ttf", 24);  
2 auto label_gameset= LabelTTF::create(gameset,"fonts/Marker Felt.ttf", 24);  
3 auto label_gamequit= LabelTTF::create(gamequit,"fonts/Marker Felt.ttf", 24);
到此我們就可以來測試運行我們的程序了,看看我們的解決結果。
解決cocos2dx在Windows平台中文亂碼問題2.png

cocos2dx-lua 建立滑鼠監聽

重要關鍵字  EVENT_MOUSE_SCROLL addEventListenerWithSceneGraphPriority      if IsPc() then --建立滑鼠監聽         local listener = cc.EventListenerMouse...