Cocos2d-JS開發常見問題彙總
1. 編譯android版本可能出現的問題記錄
如果編譯的時候報錯。出現/platforms/android-14/arch-arm/usr/lib/crtend_so.o: Unknown EABI object attribute 44或者R_ARM_THM_CALL against symbol xxx,然後編譯不過的問題
解決方案:
在android.mk上加個LOCAL_ARM_MODE := arm
出現原因:
android的編譯預設指令是:
編譯命令始終是compile++ thumb 或者 compilethumb
為什麼使用thumb:
thumb指令集是為了滿足一些低端的裝置而加上的,使用的是16位的指令集,能壓縮程式碼密度,但是指令比普通的32位arm指令弱很多。
通常來說不會出現這個問題。如果自行新增第三方庫的時候有可能會出現,建議大家記錄一下,這個問題比較難發現和解決。
2. Web平臺廣告接入--addScene廣告接入方法
註冊addSense成功以後進入後臺
選擇需要建立的廣告型別之後,點選生成廣告程式碼
生成成功後,後臺如下圖所示
將廣告程式碼貼到index.html下。即可完成廣告新增
新增成功後如下圖所示
最後, 關於廣告位置問題,可以根據html格式在index.html進行調整。
tips:如果需要接入百度移動聯盟,騰訊廣告等,也是同樣的做法。
3. 如何在Code IDE中執行js-test, 如何執行cocos命令列建立的專案
1)在Cocos Code IDE中新建一個cocos js專案,就叫CocosJsGameSampleTest吧。
2)注意在新建的時候需要選中Create From Exising Resource
如下圖所示:
然後點選確定生成專案。
3)在專案目錄中找到project.json, 修改project.json中的enginedir值從“../../frameworks/cocos2d-html5”改為 “frameworks/cocos2d-html5”;
4)點選Cocos Code IDE中的地球圖示執行,就可以看到成果了哦。
4. 如何監聽瀏覽器視窗大小變化,橫豎屏
當用戶拖拽來改變瀏覽器大小,或者更有用的情況,當他們轉動自己手機方向的時候。遊戲中任意時刻都可以開啟這種行為,只需要呼叫cc.EGLView的resizeWithBrowserSize函式:
1 |
cc.EGLView.getInstance().resizeWithBrowserSize( true );
|
為了更靈活得應對變化,我們為cc.EGLView提供了一個新的函式,你可以通過setResizeCallback函式註冊一個回撥函式來監聽瀏覽器視窗大小變化事件:
程式碼如下:
1 2 3 4 |
cc.EGLView.getInstance().setResizeCallback(function() {
// 做任何你所需要的遊戲內容層面的適配操作
// 比如說,你可以針對使用者的移動裝置方向來決定所要應用的適配模式
// 比如說 獲取寬度和高度,如果寬度大於高度就是橫屏, 如果寬度小於高度就是豎屏});
|
5. 手機瀏覽器黑屏問題
使用Cocos2d-JS最新版本導致瀏覽器黑屏的同學,可以試試在以下解決方案:加一個viewport上去就行了。
6. LabelBMFont黑邊問題
在 LabelBMFont的圖片字,純白色的粗體, 在h5上沒黑邊,在jsb下,iPhone上還有黑邊。解決方案:
7. 瀏覽器中輸入文字解決方案
我們的遊戲經常需要玩家輸入文字資訊,而edit控制元件的輸入方式又不太好用,這裡提供一個彈出框的解決方案(僅限在瀏覽器、微信中使用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
createInput: function () {
var textField = new ccui.TextField();
textField.setTouchEnabled( true );
textField.fontName = "Marker Felt" ;
textField.fontSize = 30;
textField.x = widgetSize.width / 2.0;
textField.y = widgetSize.height / 2.0;
textField.addEventListenerTextField( this .textFieldEvent, this );
},
textFieldEvent: function (sender, type) {
switch (type) {
case ccui.TextField.EVENT_ATTACH_WITH_IME:
var textField = sender;
this ._topDisplayLabel.setString( "attach with IME" );
if (!cc.sys.isNative)
{
var inputStr = window.prompt( "請輸入:" );
cc. log ( "你輸入的內容是:" +inputStr);
}
break ;
}
|
8. cocos命令編譯Android平臺,sdk版本錯誤解決方案
cocos compile -p android執行以後出現the android-platform should be equal larger than 10的解決方案:
可以使用以下命令,解決此問題:cocos compile -p android --ap XX
--ap X 指定編譯版本。你電腦上的SDK有什麼版本,就編譯什麼版本。
源引:http://cn.cocos2d-x.org/tutorial/show?id=1862