2014-10-28 70 views
2

Cocos2d-JS是Cocos2d-x引擎的JavaScript版本,包括 Cocos2d-html5和Cocos2d-x JavaScript綁定。它爲您的遊戲 提供了跨瀏覽器和跨平臺功能,並附有完整的 Cocos2d-x功能和簡化的JavaScript友好API。什麼是Cocos2d-JS?

我知道你寫JS,它可以在任何地方工作,但它是如何工作的?我想了解這個圖:http://www.cocos2d-x.org/wiki/Getting_Started_Cocos2d-js據我所知,cocos2d-html5與cocos2d-x是一樣的,但是它在JS中並且基於WebGL。如果這是真的,那麼Cocos2d-JSB是什麼?它是否將JS腳本編譯爲本地代碼?或者它是一個JS擴展解釋器,它不僅可以理解本地解釋器,還可以解釋cocos2d特定命令?

+0

據我所知,Cocos2d-JS使用JavaScript綁定與Cocos2d-X進行通信,Cocos2d-X可以編譯爲本地代碼。我只用了一個月的Cocos2d-JS,所以我遠離專家,對實際的答案非常感興趣:) – Simon 2014-10-28 15:27:04

回答

0

Cocos2d-x使用SpiderMonkey,Firefox JS虛擬機(VM),以 執行JS代碼。

JS VM已擴展爲支持所有cocos2d,Chipmunk和CocosBuilder Reader API。所以,當你在JS中創建一個CCSprite時,你實際上正在創建一個C++ CCSprite。當您在 JS中創建一個動作時,實際上是在創建一個C++動作,當您在JS中創建一個 粒子系統時,實際上是在創建一個C++粒子 系統...等等。這種方法比HTML5 遊戲快10倍〜20倍,即使他們使用類似directCanvas的加速器基本上所有的 cocos2d,Chipmunk或CocosBuilder Reader API都將以本機速度執行 。但是您應該注意以下 方案:運行垃圾收集器時性能可能會下降。解決方法:不要創建許多JS對象。重複使用 儘可能多複雜的主循環可能會降低性能。解決方法:分析您的JS代碼,如果您不能對其進行進一步優化,請使用C++編寫昂貴的部分,併爲這些函數創建綁定的JS 。

這是來自wiki.所以JS解釋器擴展瞭解cocos2d api命令,例如create Action或創建Sprite。

1

據我所知,cocos2d-html5與cocos2d-x是一樣的東西,但它在JS中是基於WebGL的 。如果這是真的,那麼Cocos2d-JSB是什麼?

相信JSB附加到的cocos2d-x JSB僅僅意味着:的cocos2d-x的JavaScript綁定

,做兩種編程語言之間的翻譯/中介通常被稱爲一個模塊「捆綁」。 JSB只是cocos2d-x的一個小方面,它允許用戶通過cocos2d-x C++渲染引擎運行用cocos2d-js Javascript編寫的應用程序。

請注意,cocos2d-html5與cocos2d-x不完全相同。它提供與cocos2d-x相似的功能,但只能在Web瀏覽器中運行。很明顯,cocos2d-html5沒有觸摸或加速計輸入的功能,以及其他限制,例如保存和加載文件。

它是否將JS腳本編譯爲本地代碼?或者它是一個JS擴展解釋器,它不僅可以理解本地解釋器,還可以解釋cocos2d特定命令?

JSB只是簡單地在JavaScript API和C++ cocos2d-x版本的類,方法,標識符之間進行映射,而不是。

我不知道它是否將Javascript編譯爲本地代碼。

這樣做的要點:

的cocos2d-JS提供的Javascript產生相同的結果,無論你在瀏覽器中通過運行一個程序編程接口(API)的cocos2d-HTML5或其他(移動)平臺通過cocos2d-x。

+0

感謝您的回答,但我不明白映射JavaScript API和cocos2d意味着什麼-x類。我不明白它是如何做到這一映射。 – Narek 2014-10-28 19:04:09

+0

簡單的例子:你有一個像doSomething()這樣的JavaScript方法,這個方法實際上是作爲C++方法實現的。 JSB所做的是確保每當你在Javascript端調用doSomething()時,它會查找並在C/C++端運行等價的方法。現在,當您使用cocos2d-html5作爲後端時,該方法被轉發到cocos2d-html5框架內相應的doSomething()的Javascript實現。 – LearnCocos2D 2014-10-28 20:10:20

+0

這是如何運作的,其範圍太廣而無法回答,而且無需理解它在原則上的作用。事實上,你根本不需要關注JSB,它對最終用戶來說是完全不透明的。 – LearnCocos2D 2014-10-28 20:11:00

相關問題