A. 如何使用Code IDE調試Cocos2d-JS開發的游戲
運行、測試游戲
1. 新建一個名為 CocosJSGame 的 Cocos javaScript 工程
2. 點擊工具欄頌頌上的 debug 按鈕
3. 默認情況下腳本會運行在我們提供的 mac 版本預編譯 runtime 上。為了簡單起見,我們不對默認值進行任何改動。如果你想要在其他我們支持的目標平台上調試程序,可參考下文的「在其它目標平台上調試」
如何調試
斷點支持
可以在 javascript 腳本文件中增加斷點
當斷點被觸發時選擇 「Yes」 打開 Debug Perspective 透視圖,可以看到很多與調試相關的視圖,調用棧、變數和斷點等等。
支持 Step over, Step into, Step out 等調試方式。
代碼熱更新
想更改右下角的 close 按鈕的位置?closeItem.attr 方法是控制該按鈕的顯示位置的。
closeItem.attr({
x: size.width - 20,
y: 20,
anchorX: 0.5,
anchorY: 0.5
});
修改「x」上面的值,把"size.width-20" 改成 ""size.width/2" 然後保持修改, 你會發現,在沒有重啟的情況下 close 按鈕的位置已經改變了,在屏幕底部的中間!
在其他目標平台上調試
通過工具欄上的打開 Debug Configurations 打開 Debug Configurations 頁面
在頁面的左側,選擇之前我們為你創建的名為CocosJSGame的configuration
在 iOS Simulator 上調試
選擇iOS Simulator單選項
選擇正確的runtime app
點擊 Debug 按鈕,預編譯的 runtime 會被自動安裝到模擬器中
在iOS設備上調試
首先,你需要一個 runtime IPA, 從 1.0.0-rc1 版本開始,你可以通過 Code IDE 自己跡猛編譯一個,然後安裝IPA到姿櫻橋設備中
在 iOS 設備上啟動 runtime
在 "Debug Configuration" 界面選擇 Remote Debug 單選項
platform 選擇 "iOS"
將設備的 ip 地址填寫在 Device IP 上
最後點擊Debug按鈕
在 android 設備上使用 ADB 模式調試
在 "Debug Configuration" 界面選擇 Android ADB Mode 單選項
選擇正確的 runtime apk
點擊Debug按鈕
IDE 會自動安裝配置中的 runtime apk 到你的連接設備上並啟動runtime開始調試
在 Android 設備上使用網路模式調試
手動安裝 runtime 到你的設備上,它被存放在 CocosLuaGame/runtime/android 目錄中
手動啟動 runtime,停留在 waiting 頁面
在 "Debug Configuration" 界面選擇 Remote Debug 單選項
platform 選擇 "Android"
將設備的 ip 地址填寫在 Device IP 上
點擊Debug按鈕
如何調試C++
從 1.0.0-rc1 版本開始,支持使用 XCode/Visual Studio 調試 C++ 代碼的同時使用 Cocos Code IDE 調試 C++ 代碼。
以調試 Mac 為例:
如果你還沒有 C++ 代碼,那麼需要先添加(右擊工程,Cocos Tools->Add Native Codes Support...)
使用 Xcode 打開 frameworks/runtime-src/proj.ios_mac 工程,並啟動調試
回到 Cocos Code IDE,打開 "Debug Configuration" 頁面,選擇 Remote Debug 單選項
platfrom 選擇 「Mac」
Target IP 填寫 "127.0.0.1"
點擊Debug按鈕..
B. IntelliJ IDEA怎麼導入已有的cocos2d-js工程
用棗擾腔首先cocos2d自帶的腳本生成android的項目工程,導入eclipse,其中eclipse必須要安裝c++插件,NDK之類的,接下來將Cocos2d的庫文件考到eclipse下(其實就是android.mk文李鬧件中用到的所有c++文件),然後在eclipse中用NDK編譯,最後編譯成功會生成.so文件,然後再運行就可以了。
Android Studio 是一個全新的 Android 開發環凳衫境,基於IntelliJ IDEA. 類似 Eclipse ADT,Android Studio 提供了集成的 Android 開發工具用於開發和調試
C. 如何在android平台上使用js直接調用Java方法
在Cocos2d-js 3.0beta中加入了一個新特性,在Android平台上我們可以通過反射直接在js中調用java的靜態方法。它的使用方法很簡單:
1 var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)
在callStaticMethod方法中,我們通過傳入Java的類名,方法名,方法簽名,參數就可以直接調用Java的靜態方法,並且可以獲得Java方法的返回值。下面介紹的類名和方法簽名可能會有一點奇怪,但是Java的規范就是如此的。
類名
參數中的類名必須是包含Java包路徑的完整類名,例如我們在org.cocos2dx.javascript這個包下面寫了一個Test類:
123456789101112 package org.cocos2dx.javascript;public class Test { public static void hello(String msg){ System.out.println(msg); } public static int sum(int a, int b){ return a + b; } public static int sum(int a){ return a + 2; }}
那麼這個Test類的完整類名應該是org/cocos2dx/javascript/Test,注意這里必須是斜線/,而不是在Java代碼中我們習慣的點。
方法名
方法名很簡單,就是方法本來的名字,例如sum方法的名字就是sum。
方法簽名
方法簽名稍微有一點復雜,最簡單的方法簽名是()V,它表示一個沒有參數沒有返回值的方法。其他一些例子:
(I)V表示參數為一個int,沒有返回值的方法;
(I)I表示參數為一個int,返回值為int的方法;
(IF)Z表示參數為一個int和一個float,返回值為boolean的方法;
現在有一些理解了吧,括弧內的符號表示參數類型,括弧後面的符號表示返回值類型。因為Java是允許函數重載的,可以有多個方法名相同但是參數返回值不同的方法,方法簽名正是用來幫助區分這些相同名字的方法的。
目前Cocos2d-js中支持的Java類型簽名有下面4種:
D. cocos2d js 畫線鋸齒問題求解決方案
(1)由於cocos2d-js的main.js多了對retina屏行輪的控制,而且默認是false,這就有可能導致畫質不清楚。
cc.view.enableRetina(false);
所以只要在enableRetina改為true,應該就改基可以看到清晰的畫面。
cc.view.enableRetina(true);
開啟可能enableRetina可能會對Android的機器造成卡頓,這里可以加入判斷是否是iOS,再決定檔殲信開啟enableRetina
var sys = cc.sys;
if(sys.os === sys.OS_IOS || sys.os === sys.OS_OSX){
cc.view.enableRetina(true);
}else{
cc.view.enableRetina(false);
}
(2) 如果圖片進行縮放的時候,可能也會造成鋸齒
處理方法:在index.html 中加入
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />
E. Cocos2d-js 3怎麼在Android上設置AdMob的banner
開始: 1)首先你需要在Sqlite3下載 sqlite3.h sqlite3.c這孫世租兩個基礎返胡文件(如果不高興下載的話 後面我會則兆把教程源碼放上來) 2)包裝類選用 我在基於wrapper的基礎上修改了包裝類 加入平台初始化信息 主要是處理Android目錄許可權的問題 3)
F. cocos2d-js寫的游戲發Android,怎麼寫超鏈接
cc.Application.getInstance().openURL
G. cocos2d-js報錯怎麼解決
cocos2d-x游戲開發旦彎之c++,js互相調用錯誤枯掘記沒遲核錄
多類型多參數傳遞時
錯誤:
if (argc > 0) {
jsval obj;
int roleId;
int nInterval;
int nlineId;
jsval jsRet;
JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp), "v", &obj);
JS_ValueToInt32(cx,obj,&roleId);
JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp+1), "v", &obj);
JS_ValueToInt32(cx,obj,&nInterval);
JS_ConvertArguments(cx, argc, JS_ARGV(cx, vp+2), "v", &obj);
JS_ValueToInt32(cx,obj,&nlineId);
int createRoleId = CCGlobalJsp::CreateRole(roleId,nlineId,(float)nInterval);
CCLog("createRoleId = %d",createRoleId);
jsRet = int32_to_jsval(cx,createRoleId);
JS_SET_RVAL(cx,vp,jsRet);
}
H. Cocos2d-js 怎樣通過jni調用android的Java非靜態函數
Cocos2d-x3.0
//a static method
Sprite* HelloWorld::maskedSpriteWithSprite(Sprite* textureSprite, Sprite* maskSprite)
{
// 1
RenderTexture * rt = RenderTexture::create( maskSprite->getContentSize().width,
maskSprite->getContentSize().height );
// 2
maskSprite->setPosition(maskSprite->getContentSize().width/2,
maskSprite->getContentSize().height/2);
textureSprite->setPosition(textureSprite->getContentSize().width/2,
textureSprite->getContentSize().height/2);
// 3
maskSprite->setBlendFunc( BlendFunc{GL_ONE, GL_ZERO} );
textureSprite->setBlendFunc( BlendFunc{GL_DST_ALPHA, GL_ZERO} );
// 4
rt->begin();
maskSprite->visit();
textureSprite->visit();
rt->end();
// 5
Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
retval->setFlippedY(true);
return retval;
}
..
I. Cocos2d-x、Quick-Cocos2d-x、Cocos Studio、Cocos2d-js、Cocos Code IDE的區別
Cocos2d-x是跨平褲兆台的框架,用C++,包括windows、ios、正消android、linux等都可以移植。
Quick-Cocos2d-x是在Cocos2d-x上加了一些功能,具體我也沒用過,我只用過Cocos2d-x。
而Cocos2d-js是用JS語言,主要是用於網頁端游戲的開發。
Cocos Studio主要是游戲界面和動畫的設計。
Cocos Code IDE是cocos官方發布的編程開發環舉純知境。如果不用官方的,我們可以用eclipse和vs等其他IDE,配置好之後進行開發。
Cocos2d-x的2.X版本和3.X差別還挺大的,兩邊的代碼不太能兼容,需要一些小修改才能運行。
純手打。。。
J. 自學cocos2d js游戲開發應該按什麼步驟進行
跟你簡要說一下我的自學路,以免你走彎路
背景:
有工作,而且很忙;在不影響工作基礎上用業余時間鼓搗(經常會因為工作耽擱學習進度);基本沒技術背景(初中qbasic、高中pascal半吊子),大學文科,工作也不是搞代碼。因此我感覺我的自學路跟你還是挺契合的。
1
兩年前的一天,決定要做獨立游戲製作人。選定引擎cocos2d,開始學習objective-c語言;(如果你打算只在iOS平台開發可以學obj-c配合cocos2d或者sprite kit;如果打算跨平台就要用cocos2d-x和c++了;當然unity什麼的也不錯但是我還沒嘗試過,一直很嚮往)
2
我跳過了iOS程序開發(似懂非懂看完了斯坦福那一系列的教學視頻),結合當時情況直接選擇了cocos2d引擎,這時開始接觸 @吳一刀 推薦的博客;我主要看的是子龍山人<子龍山人 - 博客園>、Ray Wenderlich<Ray Wenderlich>、Himi<黑米GameDev街區>這些博客里最基本的例子,知易那個以我當時的水平還看不懂。
3
嘗試開始設計自己的簡單游戲,我做打地鼠!當然比教學例子里的打地鼠復雜多了
4
這個過程中發現自己懂的實在是不夠,所以又開啃這本書:Learn cocos2d 2 by Steffen Itterheim & Andreas Low
5
慢慢的發現需要一些趁手的工具和編輯器,並發展出一套自己構建於cocos2d之上的游戲設計架構。我目前的情況是這樣:
關卡編輯我使用plist文件配合自己寫的類;
sprite sheet使用TexturePacker<TexturePacker>;
動畫/UI編輯最初自己手寫太累,後來選擇了cocosbuilder,請注意現在這個軟體已經停止維護,轉而引導用戶使用SpriteBuilder<SpriteBuilder>(域名都做了自動跳轉;SpriteBuilder我木有研究過,建議你研究一下)。
粒子編輯我自己還沒實際用到,如果真正需要我感覺cocosbuilder的夠我用的。//更新:後來用到了ParticleDesigner和cocosbuilder兩個軟體的粒子編輯混搭
我當時遇到的一個大麻煩是如何讓cocosbuilder、cocos2d版本互相兼容且cocosbuilder無問題。大概情況是這樣:cocosbuilder2.1和cocos2d-iphone2.0及2.1版本都不協調怎麼辦?;What version of Cocosbuilder and Cocos2d-iphone should I choose?
目前我使用的cocosbuilder 2.1版本(漸變層有bug、並且很可惜動畫播放完沒有觸發消息的機制,我只好把每個動畫時長都手動記錄一下自己處理)
======3月12日更新======
在 @GarfieldKwong 指點下發現這個版本動畫播放完是可以觸發消息機制的,更高級版本3.x支持的效果應該是在動畫中就加入callback的關鍵幀
新技能get√
具體代碼可見下面學習案例的第一個例子里Explosion部分
=====================
cocosbuider的學習可以看兩個例子Creating a Game with CocosBuilder;Introction to CocosBuilder;然後就是多用多嘗試。
6
整個學習過程要學會查資料、學會尋求幫助,我主要用的stackoverflow(話說剛剛發現stackoverflow的reputation喜過15,終於可以投票了:)
在學習過程中得到了子龍山人(我認為本尊是這位 @屈光輝 )、LearnCocos2d作者Steffen、 @kubisoft 以及眾多網上朋友的幫助,再次表示感謝。
7
硬體及開發者資格:看完c++開始看obj-c,這個過程一直是使用的vmware虛擬機安裝的mac系統寫程序;然後入手一個最便宜的mac pro、以及iPhone,嘗試玩各種游戲;從看c++開始大約過了1年半(已經有非常簡陋的游戲demo)才真正購入iOS開發者資格並開始真機測試。
8
嘗試過的一些其他工具、各種彎路和坑、以及發散內容:
可以拖拽方式寫代碼的stencyl <Stencyl: Make iPhone, iPad, Android & Flash Games without code>;
最初學的不是ojc-c而是譚浩強老師的c++程序設計(雖然有人不喜譚老師,但那書是中文的讓我對面對對象程序設計有一些初步的概念,再看英文的obj-c不至於太摸不著頭腦,反正手頭正好有這么一本買了6年沒看的c++。。。);
嘗試過<Tiled Map Editor>但自己目前的坑沒有用到;
嘗試過一點物理引擎和粒子,但自己目前的坑沒有用到;現在粒子用到了,做了火焰等效果,也挺美的;但是一定要注意CPU佔用優化,內存方面我最低支持4S沒遇到大問題
學習音樂製作,這個我小時候學琴一直也喜歡音樂所以有一點點底子,如果沒有基礎可能上手有門檻;開始用的軟體LMMS,但是音源插件在64位系統的問題我一直沒解決掉時間精力也不多,所以是暫時停滯了;最近發現Garage Band可能也可以寫歌;另外還試過一個很有歷史的微軟的音樂自動編輯器,很好玩,用來做背景音樂也不錯。
入手手繪板學畫畫(這中間糾結了好久才決定用點陣圖不用矢量圖),如果你能找到熱愛游戲的美術同學一起搞那最好不過。但是我一直對畫畫心癢難搔。。。所以入了這個深坑,曬一曬:
轉載
z