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.1 遊戲建立json
在3.0 alpha版本中,cc.Application
和cc.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.json
的modules
字段中指定本身須要的模塊。默認狀況下,cocos2d
是默認模塊,它包含完整的Cocos2d-html5,開發者能夠將它替換爲本身須要的子模塊。
3.1 cc.loader
cc.Loader
和cc.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,還提供了一些配套工具:
4.1 使用Javascript風格的API對對象屬性進行直接存取
舊API | 新API |
---|---|
node.setPosition(x, y); | node.x = x; node.y = y; |
node.setRotation(r); | node.rotation = r; |
如表格所示,函數調用能夠被屬性的直接賦值所替代。在3.0版中不只是x
,y
和rotation
,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
移除的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
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
詳細文檔。
在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.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);
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正式版中,第一種方式也將被移除。
雖然咱們盡力使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.1 cc.Broswser
和sys
被cc.sys
取代: 詳細文檔.
11.2 一些cc.AudioEngine
的API被刪除:
preloadMusicpreloadEffectisFormatSupportedpreloadSound
11.3 cc.SAXParser
一些cc.SAXParser
的API被刪除:
tmxParsepreloadPlistunloadPlistgetNamegetExtgetList
同時添加cc.PlistParser
用於解析plist文件:cc.SAXParser文檔
11.4 cc.textureCache
的addImageAsync
方法被移除,請統一使用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
函數如今支持x
和y
分開做爲位置參數
cc.Node中重命名的函數 :
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函數,因此咱們能夠添加一個easing
到 cc.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
,setSpeed
到 cc.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()) |
ccui.Text :
setText --> setStringgetStringValue --> getString
ccui.TextAtlas :
getStringValue ==> getString
ccui.TextBMFont :
setText --> setStringgetStringValue --> getString
ccui.TextField :
setText --> setStringgetStringValue --> getString
cc.EditBox :
setText --> setStringgetText --> getString
其餘詳細文檔列表: