從Cocos2d-html5 v2.2.x到Cocos2d-JS v3.0 alpha2升級指南

1. 事件管理機制

  • 1.1 在2.2.2版中分散的事件分發器cc.TouchDispatcher, cc.MouseDispatcher, cc.KeyboardDispatcher, cc.AccelerometerDispatcher的全部功能都已經被合併到cc.eventManager,因此事件(鼠標,觸摸,鍵盤,陀螺儀, 用戶自定義)都將由cc.eventManager負責分發,也都將經過它進行註冊。html

    更多關於cc.eventManager的信息能夠查看這篇詳細文檔html5

  • 1.2 因爲新的事件管理機制支持開發者在任何對象上綁定事件,因此在2.2.2版中的cc.Layer的事件處理相關函數都被刪除了,具體被刪除的函數列表以下:node

    isMouseEnabledsetMouseEnabledsetMousePrioritygetMousePriorityregisterWithTouchDispatcherisTouchEnabledsetTouchEnabledgetTouchPrioritysetTouchPrioritygetTouchModesetTouchModeisAccelerometerEnabledsetAccelerometerEnabled            (被移到cc.inputManager中) --> cc.inputManager.setAccelerometerEnabledsetAccelerometerInterval           (被移到cc.inputManager中) --> cc.inputManager.setAccelerometerIntervalisKeyboardEnabledsetKeyboardEnabledsetKeypadEnabled

2. 遊戲建立和配置流程

  • 2.1 遊戲建立json

    在3.0 alpha版本中,cc.Applicationcc.AppControl已經被移除了。canvas

    取而代之,咱們重構了整個遊戲建立的流程,在3.0中游戲項目建立將變得史無前例的簡單,開發者可使用cc.game來建立並開始遊戲。api

    cc.game.onStart = function(){
        cc.director.runScene(new MyScene());};cc.game.run();

    更詳細的信息請參見這個文檔:cc.game瀏覽器

  • 2.2 遊戲配置服務器

    在2.2.2版中,遊戲的配置列表(包含renderMode, fps...)與初始化代碼混在cocos2d.js文件中,這樣很不美觀,因此3.0版中咱們移除了cocos2d.js文件並將配置列表單獨抽出來放在了project.json中,因此修改配置很是簡單直觀。
    全部配置項能夠參見這篇文檔:project.json數據結構

  • 2.3 Cocos2d-html5模塊配置dom

    Cocos2d-html5已經成爲了在2d遊戲開發的各個方面都很是有競爭力的遊戲引擎,引擎擁有覆蓋面很是普遍的特性。也正所以,咱們的引擎比 市面上大多數的2d遊戲引擎佔用空間要更大。假設開發者只須要引擎中一部分特性,而且但願引擎佔有空間更小,3.0版中咱們提供了按需定製引擎的功能。首 先,引擎被分割成了不一樣的模塊,全部模塊定義能夠參見cocos2d-html5/moduleConfig.json,開發者能夠在project.jsonmodules字段中指定本身須要的模塊。默認狀況下,cocos2d是默認模塊,它包含完整的Cocos2d-html5,開發者能夠將它替換爲本身須要的子模塊。

    moduleConfig.json文檔

3. 資源加載過程

  • 3.1 cc.loader

    cc.Loadercc.FileUtils已經被cc.loader單例對象所取代。

    // 設定圖片資源路徑cc.loader.resPath = "./res";// 設定音頻資源路徑cc.loader.resPath = "./audio";// 加載資源並得到回調cc.loader.load(res, function(err){
        if(err) return console.log("load failed");});

    詳細文檔請參見:cc.loader

  • 3.2 資源加載工具

    3.0版不只提供了更統一易用的cc.loader,還提供了一些配套工具:

    • 異步函數調用模塊(模仿node.js):cc.async

    • 資源路徑配置工具:cc.path

4. 屬性風格API

  • 4.1 使用Javascript風格的API對對象屬性進行直接存取

    舊API 新API
    node.setPosition(x, y); node.x = x; node.y = y;
    node.setRotation(r); node.rotation = r;

    如表格所示,函數調用能夠被屬性的直接賦值所替代。在3.0版中不只是xyrotation,cc.Node及其全部子類的屬性均可以使用這種方式存取。

  • 4.2 attr函數

    3.0版同時還提供了一個更增強大的對象配置方法:相似jQuery的attr函數可讓你一次性配置多個屬性。

    node.attr({
        x: 20,
        y: 20,
        anchorX: 0.5,
        anchorY: 0.5,
        width: 400,
        height: 300,
        scale: 2});

    詳細文檔和具體屬性列表參見:Property API

5. 基本數據結構重構

  • 移除的API:

    cc.integerToColor3Bcc.c4FFromccc3Bcc.c4FFromccc4Bcc.c4BFromccc4Fcc.PointSpritecc.GridSizecc.gcc.V2F_C4F_T2Fcc.V2F_C4F_T2F_Quad
  • 修改的API:

    cc.Color3B, cc.Color4B, cc.Color4F -->  cc.Colorcc.c3b, cc.c4b, cc.c4f             -->  cc.colorcc.c3BEqual, cc.c4FEqual           -->  cc.colorEqualcc.convertColor3BtoHexString       -->  cc.colorToHexcc.convertHexNumToColor3B          -->  cc.hexToColorcc.white                           -->  cc.color.whitecc.yellow                          -->  cc.color.yellowcc.blue                            -->  cc.color.bluecc.green                           -->  cc.color.greencc.red                             -->  cc.color.redcc.magenta                         -->  cc.color.magentacc.black                           -->  cc.color.blackcc.orange                          -->  cc.color.orangecc.gray                            -->  cc.color.gray

    詳細文檔

6. 單例對象

3.0版將之前的C++風格單例類重構爲Javascript對象,方便開發者的使用。下面是被重構的類列表:

// 引擎核心類cc.AudioEngine.getInstance()                       --> cc.audioEnginecc.Configuration.getInstance()                     --> cc.configurationcc.Configuration.purgeConfiguration()              removedcc.Director.getInstance()                          --> cc.directorcc.EGLView.getInstance()                           --> cc.viewcc.ShaderCache.getInstance()                       --> cc.shaderCachecc.TextureCache.getInstance()                      --> cc.textureCachecc.TextureCache.purgeSharedTextureCache()          --> cc.textureCache._clear()cc.AnimationCache.getInstance()                    --> cc.animationCachecc.AnimationCache.purgeSharedAnimationCache()      --> cc.animationCache._clear()cc.SpriteFrameCache.getInstance()                  --> cc.spriteFrameCachecc.SpriteFrameCache.purgeSharedSpriteFrameCache()  --> cc.SpriteFrameCache._clear()cc.SAXParser.getInstance()                         --> cc.saxParsercc.PlistParser.getInstance()                       --> cc.plistParsercc.Screen.getInstance()                            --> cc.screencc.TIFFReader.getInstance()                        --> cc.tiffReadercc.IMEDispatcher.getInstance()                     --> cc.imeDispatcher// 擴展包中的類ccs.GUIReader.getInstance()                 --> ccs.guiReaderccs.GUIReader.purge()                       --> ccs.guiReader.clear()ccs.SceneReader.getInstance()               --> ccs.sceneReaderccs.SceneReader.purge()                     --> ccs.sceneReader.clear()ccs.DataReaderHelper                        --> ccs.dataReaderHelperccs.DataReaderHelper.purge()                --> ccs.dataReaderHelper.clear()ccs.SpriteFrameCacheHelper.getInstance()    --> ccs.spriteFrameCacheHelperccs.SpriteFrameCacheHelper.purge()          --> ccs.spriteFrameCacheHelper.clear()ccs.ArmatureDataManager.getInstance()       --> ccs.armatureDataManagerccs.ArmatureDataManager.purge()             --> ccs.armatureDataManager.clear()ccs.ActionManager.getInstance()             --> ccs.actionManagerccs.ActionManager.purge()                   --> ccs.actionManager.clear()ccs.TriggerMng.getInstance()                --> ccs.triggerManagerccs.ObjectFactory.getInstance()             --> ccs.objectFactory

詳細文檔

7. [Alpha 2新添加] 對象建立與類的繼承

在Cocos2d-html5 2.2.x中,建立一個引擎對象好比cc.Sprite,開發者須要使用正確的create函數:

var sprite = cc.Sprite.create(filename, rect);var sprite = cc.Sprite.createWithTexture(texture, rect);var sprite = cc.Sprite.createWithSpriteFrameName(spriteFrameName);

在Cocos2d-JS v3.0 alpha中,咱們作到一個很是重要的API進化,全部createXXX都被合併爲統一的create函數:

var sprite = cc.Sprite.create(filename, rect);var sprite = cc.Sprite.create(texture, rect);var sprite = cc.Sprite.create("#" + spriteFrameName);

這個改動不只適用於cc.Sprite,一樣適用於引擎中全部有相似API的類,支持的類列表以及關於create函數改造的更詳細信息請參見create API文檔

咱們從未中止改進咱們的引擎,因此在Cocos2d-JS v3.0 alpha2中,引擎支持new直接構造對象!構造函數和create函數共享徹底相同的參數:

var sprite = new cc.Sprite(filename, rect);var sprite = new cc.Sprite(texture, rect);var sprite = new cc.Sprite("#" + spriteFrameName);

與此同時,爲了向後兼容性,全部create函數也被保留,使用哪一種API風格徹底是開發者自由的選擇。更重要的是,這個改進使得類的繼承變得史無前例的簡單。開發者如今能夠徹底忽略全部的initXXX函數,你能夠簡單得經過重載ctor函數並使用正確的參數調用this._super便可完成對象的初始化:

var Enemy = cc.Sprite.extend({
    hp: 0,
    fileName: "enemy.png"
    ctor: function (hp) {
        this._super(fileName);
        this.hp = hp;
    }});var enemy1 = new Enemy(100);

如上所示,一個init函數都不須要調用,很是便於使用。全部cocos2d和擴展類都被重構以支持這種風格,並且JSB也一樣完美支持。詳細內容請參考關於new對象構造和類的繼承的詳細文檔

8. GUI控件

  • 8.1 Cocostudio擴展包中的GUI控件已經被移出單獨做爲獨立的擴展包:ccui,因此全部這些控件類的命名空間都從ccs.變爲ccui.。這樣作的緣由在於這些UI控件不只能夠被Cocostudio使用,也能夠被不使用Cocostudio的開發者單獨使用。下面是全部被重命名的類:

    ccs.Layout                  --> ccui.Layoutccs.Margin                  --> ccui.Marginccs.MarginZero              --> ccui.MarginZeroccs.LayoutParameter         --> ccui.LayoutParameterccs.RelativeLayoutParameter --> ccui.RelativeLayoutParameterccs.CocosGUIVersion         --> ccui.cocosGUIVersionccs.UIHelper                --> ccui.helperccs.Widget                  --> ccui.Widgetccs.Button                  --> ccui.Buttonccs.CheckBox                --> ccui.CheckBoxccs.ImageView               --> ccui.ImageViewccs.LoadingBar              --> ccui.LoadingBarccs.Slider                  --> ccui.Sliderccs.Text                    --> ccui.Textccs.TextAtlas               --> ccui.TextAtlasccs.TextBMFont              --> ccui.TextBMFontccs.TextField               --> ccui.TextFieldccs.UILayer                 --> deleted
  • 8.2 除此以外,3.0版還提供了一個新的富文本控件ccui.RichText.

  • 8.3 ccs.UILayer 已經從v3.0a中刪除,Widget對象要加到場景中,直接經過addChild加到Node節點中就能夠了。示例以下:

    // v2.2.2用法:  widget必需要經過UILayer的addWidget方法加入到UILayer以後,再將UILayer加入場景才行var uiLayer = ccs.UILayer.create();uiLayer.addWidget(aWidget);var node = cc.Node.create();node .addChild(uiLayer);...//v3.0a用法: widget能夠直接調用node的addChild方法,就能夠加入場景了。var node = cc.Node.create();node .addChild(aWidget);

9. NodeGrid

3.0版提供了一個新的節點cc.NodeGrid,這個節點能夠包含一個目標節點並容許在這個目標節點上應用 ActionGrid類型的動做。在2.2.2版中cc.Node能夠直接應用這種動做,可是這個行爲會在將來版本中被移除,由於咱們但願cc.Node 的邏輯能夠更純粹。下面是2.2.2版與3.0版中的ActionGrid動做使用示例比較:

// 2.2.2版var shaky = cc.Shaky3D.create( duration, cc.size(15,10), 5, false );var sprite = cc.Sprite.create();sprite.runAction( shaky );// 3.0版var shaky = cc.Shaky3D.create( duration, cc.size(15,10), 5, false );var sprite = cc.Sprite.create();var nodeGrid = cc.NodeGrid.create();nodeGrid.addChild( sprite );nodeGrid.runAction( shaky );

注意:在Cocos2d-html5 3.0a版中,第一種方式仍然有效,可是若是你但願你的遊戲能夠運行在JSB中,那麼必須使用第二種方式。另外,在3.0正式版中,第一種方式也將被移除。

10. JSB相關

雖然咱們盡力使Cocos2d-html5和Cocos2d-JSB的API趨於一致,可是咱們發現Web應用開發者和JSB原生開發者需求仍是有 必定的區別,有一些需求也很難在兩個不一樣平臺上徹底融合起來,因此咱們提供下面這些僅在JSB項目中支持的API,若是你須要使用它們,請首先進行平臺檢 查。

if (cc.sys.isNative) {
    cc.fileUtils.isFileExist("filename");}
  • 10.1 C++宏定義

    在JSB項目中,有一些宏定義只可能在C++代碼中修改,這些宏定義以下,它們均可以在ccMacros.h或ccConfig.h中找到:

    CC_ENABLE_STACKABLE_ACTIONSCC_ENABLE_GL_STATE_CACHECC_FIX_ARTIFACTS_BY_STRECHING_TEXELCC_DIRECTOR_STATS_INTERVALCC_DIRECTOR_STATS_POSITIONCC_DIRECTOR_FPS_POSITIONCC_DIRECTOR_DISPATCH_FAST_EVENTSCC_DIRECTOR_MAC_USE_DISPLAY_LINK_THREADCC_NODE_RENDER_SUBPIXELCC_SPRITEBATCHNODE_RENDER_SUBPIXELCC_TEXTURE_ATLAS_USE_VAOCC_USE_LA88_LABELSCC_SPRITE_DEBUG_DRAWCC_SPRITEBATCHNODE_DEBUG_DRAWCC_LABELBMFONT_DEBUG_DRAWCC_LABELATLAS_DEBUG_DRAWCC_NODE_DEBUG_VERIFY_EVENT_LISTENERSCC_ENABLE_PROFILERSCC_LUA_ENGINE_DEBUGCC_USE_PHYSICSCC_ENABLE_SCRIPT_BINDING
  • 10.2 [Alpha 2新添加] cc.fileUtils

    在Cocos2d-html5中,cc.FileUtils已經被cc.loader取代了,可是在JSB項目中,有一些需求cc.loader無 法知足,因此咱們決定將cc.FileUtils做爲僅JSB支持的API開放出來。而且爲了符合新的單例對象API風格,開發者能夠直接經過cc.fileUtils來獲取cc.FileUtils單例對象。下面是詳細API列表:

    cc.fileUtilscc.fileUtils.fullPathForFilename(filename)cc.fileUtils.loadFilenameLookup(filename)cc.fileUtils.getStringFromFile(filename)cc.fileUtils.getByteArrayFromFile(filename) // [beta新添加]cc.fileUtils.createDictionaryWithContentsOfFile(filename) // [beta新添加]cc.fileUtils.isAbsolutePath(path)cc.fileUtils.isPopupNotify()cc.fileUtils.getValueVectorFromFile(filename)cc.fileUtils.writeToFile(object, filename)cc.fileUtils.getValueMapFromFile(filename)cc.fileUtils.isFileExist(filename)cc.fileUtils.purgeCachedEntries()cc.fileUtils.fullPathFromRelativeFile(filename, relativeFile)cc.fileUtils.getWritablePath()cc.fileUtils.addSearchPath(path) // [beta新添加]cc.fileUtils.setSearchPaths(pathArray) // [beta新添加]cc.fileUtils.getSearchPaths() // [beta新添加]cc.fileUtils.setSearchResolutionsOrder(orderArray) // [beta新添加]cc.fileUtils.getSearchResolutionsOrder() // [beta新添加]

    請注意關於搜索路徑的函數的使用,由於它們會致使在Cocos2d-html5和Cocos2d-JSB中資源路徑的不一致,而最終使得遊戲代碼較 難維護。若是須要使用,咱們建議在Web端和JSB中使用兩套不一樣的資源映射表,一樣的資源變量對應不一樣的資源路徑,這樣能夠較輕鬆得維護代碼。

  • 10.3 cc.AssetsManager

    cc.AssetsManager是用於管理和使用遠程服務器資源的類,它也支持簡單的版本控制和更新。下面是它的使用方式:

    var manager = new cc.AssetsManager(manifestPath, storagePath);// As the process is asynchronised, you need to retain the assets manager to make sure it won't be released before the process is ended.manager.retain();if (!manager.getLocalManifest().isLoaded()) {
        cc.log("Fail to update assets, step skipped.");}else {
        var listener = new cc.EventListenerAssetsManager(manager, function(event) {
            switch (event.getEventCode())
            {
                case cc.EventAssetsManager.UPDATE_PROGRESSION:
                    var percent = event.getPercent();
                    cc.log("Download percent : " + percent);
                    break;
                case cc.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST:
                case cc.EventAssetsManager.ERROR_PARSE_MANIFEST:
                    cc.log("Fail to download manifest file, update skipped.");
                    break;
                case cc.EventAssetsManager.ALREADY_UP_TO_DATE:
                case cc.EventAssetsManager.UPDATE_FINISHED:
                    cc.log("Update finished.");
                    // You need to release the assets manager while you are sure you don't need it any more
                    manager.release();
                    break;
                case cc.EventAssetsManager.ERROR_UPDATING:
                    cc.log("Asset update error: " + event.getAssetId() + ", " + event.getMessage());
                    break;
                default:
                    break;
            }
        }}

    更多信息請參考cc.AssetsManager文檔.

11. 其餘API變更

  • 11.1 cc.Broswsersyscc.sys取代: 詳細文檔.

  • 11.2 一些cc.AudioEngine的API被刪除:

    preloadMusicpreloadEffectisFormatSupportedpreloadSound
  • 11.3 cc.SAXParser

    一些cc.SAXParser的API被刪除:

    tmxParsepreloadPlistunloadPlistgetNamegetExtgetList

    同時添加cc.PlistParser用於解析plist文件:cc.SAXParser文檔

  • 11.4 cc.textureCacheaddImageAsync方法被移除,請統一使用addImage.

    addImage(url)                           --> addImage(url)addImageAsync(url, target, callback)    --> addImage(url, callback, target)

    [Alpha 2新添加] 新的addImage使用方式也被JSB支持了。

  • 11.5 MenuItemFont的兩個方法被重命名以適應統一的API風格:

    fontName    --> getFontNamefontSize    --> getFontSize
  • 11.6 cc.view

    3.0版已經支持全部蘋果設備的視網膜屏分辨率,你可使用cc.view.enableRetina(enableOrNot)來開啓或關閉這項功能,你也可使用cc.view.isRetinaEnabled()來檢測當前視網膜屏適配是否已經開啓。最後,你能夠經過cc.view.getDevicePixelRat io()來獲取視網膜屏的像素縮放比例,在目前的蘋果設備上,該比例返回值爲2。默認狀況下,視網膜屏適配在蘋果設備上自動開啓,若是但願改變這一行爲,在關閉這項功能以後,你將須要調用一次cc.view.setDesignResolutionSize(width, height, policy)來讓改變生效。

    [Alpha 2新添加] cc.view會在移動瀏覽器上自動嘗試進入全屏。如今咱們爲這項功能添加了開關函數,默認狀況下這項功能仍然是開啓的。

    cc.view.enableAutoFullScreen(enabled); // enabled參數值能夠是true或falsecc.view.isAutoFullScreenEnabled(); // 該函數返回當前值
  • 11.7 其餘被刪除的API

    cc.IS_SHOW_DEBUG_ON_PAGEcc.COCOS2D_DEBUGcc.PLATFORM_WINDOWScc.PLATFORM_LINUXcc.PLATFORM_MACOScc.PLATFORM_ANDROIDcc.PLATFORM_IPHONEcc.PLATFORM_BLACKBERRYcc.PLATFORM_NACLcc.PLATFORM_EMSCRIPTENcc.HASH_FIND_INTcc.isAddedHiddenEventcc.originalCanvasSizecc.configcc.loadImgcc.loadImage.handlercc.computeImageFormatTypecc.tgaLoadccs.UILayer
  • 11.8 其餘添加的API:

    cc.warncc.errorcc.defineGetterSettercc.BuilderReader.registerController
  • 11.9 其餘修改的API:

    cc.Assert                       --> cc.assertcc.ArrayVerifyType              --> cc.arrayVerifyTypecc.ArrayRemoveObject            --> cc.arrayRemoveObjectcc.ArrayRemoveArray             --> cc.arrayRemoveArraycc.ArrayAppendObjectsToIndex    --> cc.arrayAppendObjectsToIndexcc.ArrayRemoveObjectAtIndex(arr, index)         --> arr.splice(index, 1)cc.ArrayGetIndexOfValue(arr, value)             --> arr.indexOf(value)cc.ArrayAppendObject(arr, addObj)               --> arr.push(addObj)cc.ArrayAppendObjectToIndex(arr, addObj, index) --> arr.splice(index, 0, addObj)cc.ArrayGetIndexOfObject(arr, findObj)          --> arr.indexOf(findObj)cc.ArrayContainsObject(arr, findObj)            --> arr.indexOf(findObj) != -1// 修改大寫函數爲小寫函數以符合命名規範cc.PRIORITY_SYSTEM              --> cc.Scheduler.PRIORITY_SYSTEMcc.SWAP                         --> cc.swap // [Alpha 2新添加]cc.RANDOM_MINUS1_1              --> cc.randomMinus1To1 // [Alpha 2新添加]cc.RANDOM_0_1                   --> cc.random0To1 // [Alpha 2新添加]cc.DEGREES_TO_RADIANS           --> cc.degreesToRadians // [Alpha 2新添加]cc.RADIANS_TO_DEGREES           --> cc.radiansToDegress // [Alpha 2新添加]cc.NODE_DRAW_SETUP              --> cc.nodeDrawSetup // [Alpha 2新添加]cc.ENABLE_DEFAULT_GL_STATES     --> cc.enableDefaultGLStates // [Alpha 2新添加]cc.DISABLE_DEFAULT_GL_STATES    --> cc.disableDefaultGLStates // [Alpha 2新添加]cc.INCREMENT_GL_DRAWS           --> cc.incrementGLDraws // [Alpha 2新添加]cc.CONTENT_SCALE_FACTOR         --> cc.contentScaleFactor // [Alpha 2新添加]cc.POINT_POINTS_TO_PIXELS       --> cc.pointPointsToPixels // [Alpha 2新添加]cc.SIZE_POINTS_TO_PIXELS        --> cc.sizePointsToPixels // [Alpha 2新添加]cc.SIZE_PIXELS_TO_POINTS        --> cc.sizePixelsToPoints // [Alpha 2新添加]cc._SIZE_PIXELS_TO_POINTS_OUT   --> cc._sizePixelsToPointsOut // [Alpha 2新添加]cc.POINT_PIXELS_TO_POINTS       --> cc.pointPixelsToPoints // [Alpha 2新添加]cc._POINT_PIXELS_TO_POINTS_OUT  --> cc._pointPixelsToPointsOut // [Alpha 2新添加]cc.RECT_PIXELS_TO_POINTS        --> cc.rectPixelsToPoints // [Alpha 2新添加]cc.RECT_POINTS_TO_PIXELS        --> cc.rectPointsToPixels // [Alpha 2新添加]cc.CHECK_GL_ERROR_DEBUG         --> cc.checkGLErrorDebug // [Alpha 2新添加]cc.CardinalSplineAt             --> cc.cardinalSplineAt **[Alpha 2新添加]**// 常量cc.SPRITE_INDEX_NOT_INITIALIZED         --> cc.Sprite.INDEX_NOT_INITIALIZED // [Alpha 2新添加]cc.DIRECTOR_PROJECTION_2D               --> cc.Director.PROJECTION_2D // [Alpha 2新添加]cc.DIRECTOR_PROJECTION_3D               --> cc.Director.PROJECTION_3D // [Alpha 2新添加]cc.DIRECTOR_PROJECTION_CUSTOM           --> cc.Director.PROJECTION_CUSTOM // [Alpha 2新添加]cc.DIRECTOR_PROJECTION_DEFAULT          --> cc.Director.PROJECTION_DEFAULT // [Alpha 2新添加]cc.TEXTURE_2D_PIXEL_FORMAT_RGBA8888     --> cc.Texture2D.PIXEL_FORMAT_RGBA8888cc.TEXTURE_2D_PIXEL_FORMAT_RGB888       --> cc.Texture2D.PIXEL_FORMAT_RGB888cc.TEXTURE_2D_PIXEL_FORMAT_RGB565       --> cc.Texture2D.PIXEL_FORMAT_RGB565cc.TEXTURE_2D_PIXEL_FORMAT_A8           --> cc.Texture2D.PIXEL_FORMAT_A8cc.TEXTURE_2D_PIXEL_FORMAT_I8           --> cc.Texture2D.PIXEL_FORMAT_I8cc.TEXTURE_2D_PIXEL_FORMAT_AI88         --> cc.Texture2D.PIXEL_FORMAT_AI88cc.TEXTURE_2D_PIXEL_FORMAT_RGBA4444     --> cc.Texture2D.PIXEL_FORMAT_RGBA4444cc.TEXTURE_2D_PIXEL_FORMAT_RGB5A1       --> cc.Texture2D.PIXEL_FORMAT_RGB5A1cc.TEXTURE_2D_PIXEL_FORMAT_PVRTC4       --> cc.Texture2D.PIXEL_FORMAT_PVRTC4cc.TEXTURE_2D_PIXEL_FORMAT_PVRTC2       --> cc.Texture2D.PIXEL_FORMAT_PVRTC2cc.TEXTURE_2D_PIXEL_FORMAT_DEFAULT      --> cc.Texture2D.PIXEL_FORMAT_DEFAULTcc.Texture2D.setDefaultAlphaPixelFormat(format) --> cc.Texture2D.defaultPixelFormat = formatcc.Texture2D.getDefaultAlphaPixelFormat()       --> cc.Texture2D.defaultPixelFormatcc.Texture2D.defaultAlphaPixelFormat()          --> cc.Texture2D.defaultPixelFormatcc.dumpConfig           --> cc.sys.dump// 公有轉爲私有cc.setup                    --> cc._setupcc.initDebugSetting         --> cc._initDebugSettingcc.canvas                   --> cc._canvascc.drawingUtil              --> cc._drawingUtilcc.renderContext            --> cc._renderContextcc.gameDiv                  --> cc._gameDivcc.setContextMenuEnable     --> cc._setContextMenuEnablecc.renderContextType        --> cc._renderTypecc.CANVAS                   --> cc._RENDER_TYPE_CANVAScc.WEBGL                    --> cc._RENDER_TYPE_CANVAScc.mainRenderContextBackup  --> cc._mainRenderContextBackupcc.RectFromString           --> cc.spriteFrameCache._rectFromStringcc.PointFromString          --> cc.spriteFrameCache._pointFromStringcc.SizeFromString           --> cc.spriteFrameCache._sizeFromStringccs.CocoStudioVersion       --> ccs.cocostudioVersion// 修正拼寫錯誤ccs.DecotativeDisplay       --> ccs.DecorativeDisplay
  • 11.10 [Alpha 2新添加] Alpha 2中其餘API改動

    pauseSchedulerAndActions    --> pauseresumeSchedulerAndActions   --> resume
    cc.MoveBy.create(duration, x, y);cc.MoveBy.create(duration, cc.p(x, y));
    getCString  --> getStringsetCString  --> setString
    • ccs.comAttribute中重命名的函數 :

    • cc.CallFunc的initWithTarget函數被重命名爲initWithFunction

    • cc.MoveBy的create函數如今支持xy分開做爲位置參數

    • cc.Node中重命名的函數 :

    12.[Beta新添加]Actions API變更

    • 12.1 提供action的短方法建立方式
      咱們還針對action的相關類,增長了更加簡單的建立方法,經過類名第一個字母改成小寫就能建立出一個新的對象:

      好比:

      var action =  cc.MoveBy.create(2, cc.p(10, 10))

      這個action能夠經過下面更簡單的方式建立:

      var action = cc.moveBy(2,cc.p(10,10))
    • 12.2 從新設計ease actions

      全部的ease action實際上是修飾性的action, 他們沒法脫離目標action獨立使用. 其有效部分也只是update函數,因此咱們能夠添加一個easingcc.ActionInterval中, 它能夠接受不一樣的ease對象來實現不一樣的ease動做效果。

      新舊使用方法的比較,新的調用方式採用鏈式的調用更加簡單、易用:

      舊的調用方式:

      var easeMoveBy = cc.EaseIn.create(cc.MoveBy.create(2, cc.p(100,50)),0.3);

      新的調用方式:

      var easeMoveBy = cc.moveBy(2,cc.p(100,50)).easing(cc.easeIn(0.3);
    • 12.3 關於 cc.Repeat, cc.RepeatForever, cc.Speed 的新設計

      如下的 cc.Repeat, cc.RepeatForever, cc.Speed 都是修飾性的actions, 因此咱們添加對應的函數  repeat,repeatForever,speed,getSpeed,setSpeedcc.ActionInterval中. 經過這邪惡函數,開發者能夠將原來複雜的動做以清晰的方式進行表示。All these changes allow developers to write complex actions more clearly.

      舊的調用方式:

      var anAction = cc.Sequence.create(
          cc.Speed.create(cc.Repeat.create(cc.EaseIn.create(cc.MoveBy.create(2, cc.p(100,50)),0.3), 5),1.7),
          cc.RepeatForever.create(cc.RotateBy.create(2, 30)));

      新的調用方式:

      var anAction = cc.sequence(
          cc.moveBy(2,cc.p(100,50)).easing(cc.easeIn(0.3)).repeat(5).speed(1.7), 
          cc.rotateBy(2,30).repeatForever());

      注意: 全部的Actions的舊API都保留,並向前兼容。

    • 12.4 新增Actions API列表

      舊的調用方法 新的調用方法
      cc.Repeat.create(action, num) action.repeat(num)
      cc.RepeatForever.create(action) action.repeatForever()
      cc.Speed.create(action, speed) action.speed(speed)
      cc.Speed.setSpeed(speed) action.setSpeed(speed)
      cc.Speed.getSpeed() action.getSpeed()
      cc.EaseIn.create(action, rate) action.easing(cc.easeIn(rate))
      cc.EaseOut.create(action, rate) action.easing(cc.easeOut(rate))
      cc.EaseInOut.create(action, rate) action.easing(cc.easeInOut(rate))
      cc.EaseExponentialIn.create(action) action.easing(cc.easeExponentialIn())
      cc.EaseExponentialOut.create(action) action.easing(cc.easeExponentialOut())
      cc.EaseExponentialInOut.create(action) action.easing(cc.easeExponentialInOut())
      cc.EaseSineIn.create(action) action.easing(cc.easeSineIn())
      cc.EaseSineOut.create(action) action.easing(cc.easeSineOut())
      cc.EaseSineInOut.create(action) action.easing(cc.easeSineInOut())
      cc.EaseElasticIn.create(action) action.easing(cc.easeElasticIn())
      cc.EaseElasticOut.create(action) action.easing(cc.easeElasticOut())
      cc.EaseElasticInOut.create(action, rate) action.easing(cc.easeElasticInOut(rate))
      cc.EaseBounceIn.create(action) action.easing(cc.easeBounceIn())
      cc.EaseBounceOut.create(action) action.easing(cc.easeBounceOut())
      cc.EaseBounceInOut.create(action) action.easing(cc.easeBounceInOut())
      cc.EaseBackIn.create(action) action.easing(cc.easeBackIn())
      cc.EaseBackOut.create(action) action.easing(cc.easeBackOut())
      cc.EaseBackInOut.create(action) action.easing(cc.easeBackInOut())

    13.[Beta新變更]修改setText,getText爲統一的API SetString, getString

    • ccui.Text :

      setText --> setStringgetStringValue --> getString
    • ccui.TextAtlas :

      getStringValue ==> getString
    • ccui.TextBMFont :

      setText --> setStringgetStringValue --> getString
    • ccui.TextField :

      setText --> setStringgetStringValue --> getString
    • cc.EditBox :

      setText --> setStringgetText --> getString

    其餘詳細文檔列表:

    相關文章
    相關標籤/搜索