[JSB-cocos2d-html5篇]物件觸控失效無響應

文章撰寫日期︰2013/11/21 17:40
cocos2dx使用版本︰v 2.1.5

一、問題

今天遇到CCControlButton在Cocos2d-html5無響應的問題。

二、解決辦法

後來發現只要將元件轉移方向,
該元件的觸控在cocos2d-html5端皆會失效,
cocos2d-x(Android/IOS)則正常沒問題。

[JSB篇]Android端使用返回鍵(在CocosBuilder的使用狀況下)

文章撰寫日期︰2013/11/14 14:27
cocos2dx使用版本︰v 2.1.4

一、前言

Android的返回鍵使用,
在Cocos2d-x-JSB的環境下,
很多人都摸不著頭緒不知道如何使用。
這裡提供我所使用而且也成功控制到back key的方式。

二、文章開始

這篇假設你的每個JS檔是和CocosBuilder綁定使用的。
因此你的Code裡應該有支援onDidLoadFromCCB()這個CocosBuilder給你的callback函式。
var MyScene = function(){

 this.onDidLoadFromCCB = function()
 {
  cc.log("into MyScene onDidLoadFromCCB");

        //添加Android返回鍵控制
        if( sys.os == "android" || sys.os == "Android") {

            //務必啟動KeypadEnabled
            this.rootNode.setKeypadEnabled(true);

            this.rootNode.backClicked = function(){
                cc.log("into MyScene backClicked");

                //做任何Android back key觸發後,你想做的事情。

            };
        }
        };
};
如上面Code所寫,
在綁定CocosBuilder檔後,
回傳的callback: onDidLoadFromCCB()裡,
我們去啟動KeypadEnabled,
並同時將backClicked()函式實作完成。

由於這個MyScene.js檔的this在綁定CocosBuilder(ccb)檔後,
this指的是ccbi畫面層(畫面第2層),
原來的CCLayer層(畫面頂層)就要用this.rootNode來取得。

Cocos2d-x的基本生命週期函式像
onEnter()、onExit()、onUpdate()...
也都要用this.rootNode的方式,
才能使用並取得到他們。

[JSB篇]FB-Web端登入岀錯

文章撰寫日期︰2013/10/16 15:58
cocos2dx使用版本︰v 2.1.6 alpha 0

一、問題

今天在串接Facebook-Javascript時,
遇到了
An error occurred. Please try again later.

發生錯誤,請稍候再試。


二、解決方法

我遇到的問題是使用facebook登入網站程式時,
Facebook會將沙盒模式預設為開啟。
這樣的話開發者帳號以外的使用者,
會無法順利的使用Facebook做登入。

關掉就解決問題囉!

[cocos2dx - 3.0篇]Bug List

文章撰寫日期︰2013/09/20 14:29
cocos2dx使用版本︰v 3.0 alpha 0
cocosBuilder使用版本︰v3.0 alpha5

底下列出cocos2dx3.0 pre-alpha0在使用上遇過的BUGs,我使用JSB做為開發工具。

[cocos2dx端]

1. 在Samsung S(i9000)無法繪製cocos2dx view,螢屏全黑。
顯示錯誤log如下:
W/cocos2dx/nativeactivity.cpp(7186)engine_draw_frame : No display.

[JSB端]

1. 粒子系統繪製有問題

2. CCEditBox在Android端會crash(Android 4.1.2 Saumsung SII)
3. XMLHttpRequest無法使用BufferArray。
4. 針對CocosBuilder裡的Node做setContentSize()產生未預期效果。
5. 目前還沒有下載網路端文字以外資源的實際方法。

[HTML5端]

1. CCEditBox在Web上使用getText(),
如果CCEditBox為空時,會取到PlaceHolder字串。
2. CocosBuilder 3.0 alpha5 使用Timeline上的callback,
在HTML5上接收無響應。
3. CCLabelTTF設定Dimensions時,斷行方式僅會以"\n"或遇到空白時才斷行。
4. CCSprite沒有getTexture()方法。

[cocos2dx-JSB篇]Undefined symbols for architecture i386: "_jsb_Object_prototype", referenced from

文章撰寫日期︰2013/09/17 17:24
cocos2dx使用版本︰v 3.0 alpha 0

一、問題

今天在產生JSB-Binding檔時,遇到
Undefined symbols for architecture i386: "_jsb_Object_prototype", referenced from ...
的問題。

二、解決辦法

將binding-generator產生岀3個檔中的autoxxxxbindings.cpp(如autogensimpletestbindings.cpp)檔,
jsb_Object_prototype物件給予預設NULL初始值即可解決。

原來binding-generator產生岀來的code是
extern JSObject *jsb_Object_prototype;
改成
extern JSObject *jsb_Object_prototype = NULL;
即可。

關鍵字︰
Undefined symbols for architecture i386: _jsb_Object_prototype
Undefined symbols for architecture i386: _jsb_CCObject_prototype

[cocos2dx-JSB篇]ImportError: no module named yaml

文章撰寫日期︰2013/09/17 11:14
cocos2dx使用版本︰v 3.0 alpha 0

一、問題

今天在使用tools\tojs\genbindings.sh時,遇到
ImportError: no module named yaml
的錯誤。

二、解決辦法


1.下載PyYAML
http://pyyaml.org/download/pyyaml/PyYAML-3.10.tar.gz

2.解壓縮並執行下列語法
$python setup.py install

3.這個包含有一個測試封裝檔,可以執行下列語法來測試
$python setup.py test

[cocos2x-JSB篇]ImportError: No module named Cheetah.Template

文章撰寫日期︰2013/09/17 11:22
cocos2dx使用版本︰v 3.0 alpha 0

一、問題

今天在使用tools\tojs\genbindings.sh時,遇到
ImportError: No module named Cheetah.Template
的錯誤。

二、解決辦法


1.下載Cheetah
http://pypi.python.org/packages/source/C/Cheetah/Cheetah-2.4.4.tar.gz

2.解壓縮後在目錄裡執行下列語法
$sudo python setup.py install