From 34c7331b99614dbd6d9a93250d3f9e7a74cd60de Mon Sep 17 00:00:00 2001 From: pandamicro Date: Thu, 17 Dec 2015 21:57:19 +0800 Subject: [PATCH] Issue fixes for new memory model --- .../editor-support/cocosbuilder/CCBReader.cpp | 9 - .../cocostudio/CCArmatureAnimation.cpp | 2 +- .../cocostudio/CCArmatureAnimation.h | 2 +- cocos/editor-support/cocostudio/CCBone.cpp | 2 - .../js-bindings/manual/ScriptingCore.cpp | 5 +- .../scripting/js-bindings/script/jsb_boot.js | 12 +- .../js-bindings/script/jsb_cocos2d.js | 9 +- .../js-bindings/script/jsb_cocosbuilder.js | 2 + .../js-bindings/script/jsb_create_apis.js | 352 +++++++----------- .../src/CocosNodeTest/CocosNodeTest.js | 2 +- .../AssetsManagerTest/AssetsManagerTest.js | 154 ++++---- tests/js-tests/src/XHRTest/XHRTest.js | 14 +- 12 files changed, 243 insertions(+), 322 deletions(-) diff --git a/cocos/editor-support/cocosbuilder/CCBReader.cpp b/cocos/editor-support/cocosbuilder/CCBReader.cpp index 68ce5c10c8..29c96ddc0a 100644 --- a/cocos/editor-support/cocosbuilder/CCBReader.cpp +++ b/cocos/editor-support/cocosbuilder/CCBReader.cpp @@ -613,13 +613,6 @@ Node * CCBReader::readNodeGraph(Node * pParent) node = embeddedNode; } -#ifdef CCB_ENABLE_JAVASCRIPT - /* - if (memberVarAssignmentType && memberVarAssignmentName && ![memberVarAssignmentName isEqualToString:@""]) - { - [[JSCocoa sharedController] setObject:node withName:memberVarAssignmentName]; - }*/ -#else if (memberVarAssignmentType != TargetType::NONE) { if(!_jsControlled) @@ -696,8 +689,6 @@ Node * CCBReader::readNodeGraph(Node * pParent) } } } - -#endif // CCB_ENABLE_JAVASCRIPT delete _animatedProps; _animatedProps = nullptr; diff --git a/cocos/editor-support/cocostudio/CCArmatureAnimation.cpp b/cocos/editor-support/cocostudio/CCArmatureAnimation.cpp index 207ae2d875..15e4d0eb41 100644 --- a/cocos/editor-support/cocostudio/CCArmatureAnimation.cpp +++ b/cocos/editor-support/cocostudio/CCArmatureAnimation.cpp @@ -230,7 +230,7 @@ void ArmatureAnimation::play(const std::string& animationName, int durationTo, Tween *tween = bone->getTween(); if(movementBoneData && movementBoneData->frameList.size() > 0) { - _tweenList.pushBack(tween); + _tweenList.push_back(tween); movementBoneData->duration = _movementData->duration; tween->play(movementBoneData, durationTo, durationTween, loop, tweenEasing); diff --git a/cocos/editor-support/cocostudio/CCArmatureAnimation.h b/cocos/editor-support/cocostudio/CCArmatureAnimation.h index a5b0f3feca..9afa10fbc1 100644 --- a/cocos/editor-support/cocostudio/CCArmatureAnimation.h +++ b/cocos/editor-support/cocostudio/CCArmatureAnimation.h @@ -283,7 +283,7 @@ protected: int _toIndex; //! The frame index in MovementData->m_pMovFrameDataArr, it's different from m_iFrameIndex. - cocos2d::Vector _tweenList; + std::vector _tweenList; bool _ignoreFrameEvent; diff --git a/cocos/editor-support/cocostudio/CCBone.cpp b/cocos/editor-support/cocostudio/CCBone.cpp index 45ac09416b..322e4815bd 100644 --- a/cocos/editor-support/cocostudio/CCBone.cpp +++ b/cocos/editor-support/cocostudio/CCBone.cpp @@ -68,10 +68,8 @@ Bone::Bone() _childArmature = nullptr; _boneData = nullptr; _tween = nullptr; - _tween = nullptr; _displayManager = nullptr; _ignoreMovementBoneData = false; -// _worldTransform = AffineTransformMake(1, 0, 0, 1, 0, 0); _worldTransform = Mat4::IDENTITY; _boneTransformDirty = true; _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; diff --git a/cocos/scripting/js-bindings/manual/ScriptingCore.cpp b/cocos/scripting/js-bindings/manual/ScriptingCore.cpp index 30a8f4b667..0a1066bc38 100644 --- a/cocos/scripting/js-bindings/manual/ScriptingCore.cpp +++ b/cocos/scripting/js-bindings/manual/ScriptingCore.cpp @@ -78,7 +78,7 @@ // EXPERIMENTAL: Enable this in order to get rid of retain/release // when using the Garbage Collector -#define CC_ENABLE_GC_FOR_NATIVE_OBJECTS 1 +#define CC_ENABLE_GC_FOR_NATIVE_OBJECTS 0 using namespace cocos2d; @@ -2140,12 +2140,13 @@ JS::HandleObject jsb_create_weak_jsobject(JSContext *cx, void *native, js_type_c JS::RootedObject proto(cx, typeClass->proto.ref()); JS::RootedObject parent(cx, typeClass->parentProto.ref()); JS::RootedObject jsObj(cx, JS_NewObject(cx, typeClass->jsclass, proto, parent)); - jsb_new_proxy(native, jsObj); + auto proxy = jsb_new_proxy(native, jsObj); #if not CC_ENABLE_GC_FOR_NATIVE_OBJECTS JS::AddNamedObjectRoot(cx, &proxy->obj, debug); #else #if COCOS2D_DEBUG + CC_UNUSED_PARAM(proxy); CCLOG("++++++WEAK_REF++++++ Cpp(%s): %p - JS: %p", debug, native, jsObj.get()); #endif // COCOS2D_DEBUG #endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS diff --git a/cocos/scripting/js-bindings/script/jsb_boot.js b/cocos/scripting/js-bindings/script/jsb_boot.js index 4806954695..f1299ef9ab 100644 --- a/cocos/scripting/js-bindings/script/jsb_boot.js +++ b/cocos/scripting/js-bindings/script/jsb_boot.js @@ -852,7 +852,7 @@ cc.TextureCache.prototype.addImage = function(url, cb, target) { } else { if (cb) { - return this._addImage(url, cb) + return this._addImage(url, cb); } else { return this._addImage(url); @@ -1312,6 +1312,8 @@ var _initSys = function () { platform === sys.WP8 || platform === sys.TIZEN || platform === sys.BLACKBERRY) ? true : false; + + sys._application = cc.Application.getInstance(); /** * Indicate the current language of the running system @@ -1320,7 +1322,7 @@ var _initSys = function () { * @type {String} */ sys.language = (function(){ - var language = cc.Application.getInstance().getCurrentLanguage(); + var language = sys._application.getCurrentLanguage(); switch(language){ case 0: return sys.LANGUAGE_ENGLISH; case 1: return sys.LANGUAGE_CHINESE; @@ -1472,7 +1474,7 @@ var _initSys = function () { str += "os : " + self.os + "\r\n"; str += "platform : " + self.platform + "\r\n"; cc.log(str); - } + }; /** * Open a url in browser @@ -1481,8 +1483,8 @@ var _initSys = function () { * @param {String} url */ sys.openURL = function(url){ - cc.Application.getInstance().openURL(url); - } + sys._application.openURL(url); + }; // JS to Native bridges if(window.JavascriptJavaBridge && cc.sys.os == cc.sys.OS_ANDROID){ diff --git a/cocos/scripting/js-bindings/script/jsb_cocos2d.js b/cocos/scripting/js-bindings/script/jsb_cocos2d.js index 22b244374a..a6d3e7b4b6 100644 --- a/cocos/scripting/js-bindings/script/jsb_cocos2d.js +++ b/cocos/scripting/js-bindings/script/jsb_cocos2d.js @@ -1595,14 +1595,7 @@ cc.Director.EVENT_BEFORE_UPDATE = "director_before_update"; cc.Director.EVENT_AFTER_UPDATE = "director_after_update"; cc.Director.EVENT_BEFORE_SCENE_LAUNCH = "director_before_scene_launch"; -cc.Director.prototype.runScene = function(scene){ - if (!this.getRunningScene()) { - this.runWithScene(scene); - } - else { - this.replaceScene(scene); - } -}; +cc.Director.prototype.runScene = cc.Director.prototype.replaceScene; cc.visibleRect = { topLeft:cc.p(0,0), diff --git a/cocos/scripting/js-bindings/script/jsb_cocosbuilder.js b/cocos/scripting/js-bindings/script/jsb_cocosbuilder.js index 84c6b41086..1dca89f127 100644 --- a/cocos/scripting/js-bindings/script/jsb_cocosbuilder.js +++ b/cocos/scripting/js-bindings/script/jsb_cocosbuilder.js @@ -97,6 +97,7 @@ cc.BuilderReader.load = function(file, owner, parentSize) } var nodesWithAnimationManagers = reader.getNodesWithAnimationManagers(); + node._nodesWithAnimationManagers = nodesWithAnimationManagers; var animationManagersForNodes = reader.getAnimationManagersForNodes(); var controllerClassCache = cc.BuilderReader._controllerClassCache; @@ -123,6 +124,7 @@ cc.BuilderReader.load = function(file, owner, parentSize) // Callbacks var documentCallbackNames = animationManager.getDocumentCallbackNames(); var documentCallbackNodes = animationManager.getDocumentCallbackNodes(); + innerNode._documentCallbackNodes = documentCallbackNodes; for (var j = 0; j < documentCallbackNames.length; j++) { diff --git a/cocos/scripting/js-bindings/script/jsb_create_apis.js b/cocos/scripting/js-bindings/script/jsb_create_apis.js index 0001d2e9a0..f939df557a 100644 --- a/cocos/scripting/js-bindings/script/jsb_create_apis.js +++ b/cocos/scripting/js-bindings/script/jsb_create_apis.js @@ -30,6 +30,10 @@ var _p; /************************ Layers *************************/ +var dummyCtor = function(){ + this.init(); +}; + _p = cc.Layer.prototype; _p._ctor = function() { cc.Layer.prototype.init.call(this); @@ -55,14 +59,14 @@ _p._ctor = function(start, end, v, colorStops) { this.initWithColor(start, end, v); if (colorStops instanceof Array) { - cc.log("Warning: Color stops parameter is not supported in JSB."); + cc.log('Warning: Color stops parameter is not supported in JSB.'); } }; _p = cc.LayerMultiplex.prototype; _p._ctor = function(layers) { - if(layers != undefined){ + if(layers !== undefined){ if (layers instanceof Array) cc.LayerMultiplex.prototype.initWithArray.call(this, layers); else @@ -80,8 +84,8 @@ _p._ctor = function(fileName, rect) { if (fileName === undefined) { cc.Sprite.prototype.init.call(this); } - else if (typeof(fileName) === "string") { - if (fileName[0] === "#") { + else if (typeof(fileName) === 'string') { + if (fileName[0] === '#') { //init with a sprite frame name var frameName = fileName.substr(1, fileName.length - 1); this.initWithSpriteFrameName(frameName); @@ -90,7 +94,7 @@ _p._ctor = function(fileName, rect) { rect ? this.initWithFile(fileName, rect) : this.initWithFile(fileName); } } - else if (typeof(fileName) === "object") { + else if (typeof(fileName) === 'object') { if (fileName instanceof cc.Texture2D) { //init with texture and rect rect ? this.initWithTexture(fileName, rect) : this.initWithTexture(fileName); @@ -107,7 +111,7 @@ _p._ctor = function(fileName, rect) { _p = cc.SpriteBatchNode.prototype; _p._ctor = function(fileImage, capacity) { capacity = capacity || cc.SpriteBatchNode.DEFAULT_CAPACITY; - if (typeof(fileImage) == "string") + if (typeof(fileImage) == 'string') this.initWithFile(fileImage, capacity); else this.initWithTexture(fileImage, capacity); @@ -115,12 +119,12 @@ _p._ctor = function(fileImage, capacity) { _p = cc.SpriteFrame.prototype; _p._ctor = function(filename, rect, rotated, offset, originalSize){ - if(originalSize != undefined){ + if(originalSize !== undefined){ if(filename instanceof cc.Texture2D) this.initWithTexture(filename, rect, rotated, offset, originalSize); else this.initWithTexture(filename, rect, rotated, offset, originalSize); - }else if(rect != undefined){ + }else if(rect !== undefined){ if(filename instanceof cc.Texture2D) this.initWithTexture(filename, rect); else @@ -151,7 +155,7 @@ _p._ctor = function(gridSize, texture, flipped){ _p = cc.Menu.prototype; _p._ctor = function(menuItems) { if((arguments.length > 0) && (arguments[arguments.length-1] == null)) - cc.log("parameters should not be ending with null in Javascript"); + cc.log('parameters should not be ending with null in Javascript'); var argc = arguments.length, items = []; @@ -210,10 +214,10 @@ _p._ctor = function(normalSprite, selectedSprite, three, four, five) { disabledSprite = three; callback = four; target = five; - } else if (four && typeof four === "function") { + } else if (four && typeof four === 'function') { disabledSprite = three; callback = four; - } else if (four && typeof three === "function") { + } else if (four && typeof three === 'function') { target = four; callback = three; disabledSprite = normalSprite; @@ -239,7 +243,7 @@ _p._ctor = function(normalImage, selectedImage, three, four, five) { callback = three; } else if (five === undefined) { - if (typeof three === "function") { + if (typeof three === 'function') { callback = three; target = four; } @@ -301,7 +305,7 @@ _p._ctor = function(fade, minSeg, stroke, color, texture){ _p = cc.ParticleBatchNode.prototype; _p._ctor = function(fileImage, capacity){ capacity = capacity || cc.PARTICLE_DEFAULT_CAPACITY; - if (typeof(fileImage) == "string") { + if (typeof(fileImage) == 'string') { cc.ParticleBatchNode.prototype.init.call(this, fileImage, capacity); } else if (fileImage instanceof cc.Texture2D) { this.initWithTexture(fileImage, capacity); @@ -310,29 +314,28 @@ _p._ctor = function(fileImage, capacity){ _p = cc.ParticleSystem.prototype; _p._ctor = function(plistFile){ - if (!plistFile || typeof(plistFile) === "number") { + if (!plistFile || typeof(plistFile) === 'number') { var ton = plistFile || 100; this.initWithTotalParticles(ton); - } else if ( typeof plistFile === "string") { + } else if ( typeof plistFile === 'string') { this.initWithFile(plistFile); } else if(plistFile){ this.initWithDictionary(plistFile); } }; -cc.ParticleFire.prototype._ctor = cc.ParticleFireworks.prototype._ctor - = cc.ParticleSun.prototype._ctor - = cc.ParticleGalaxy.prototype._ctor - = cc.ParticleMeteor.prototype._ctor - = cc.ParticleFlower.prototype._ctor - = cc.ParticleSpiral.prototype._ctor - = cc.ParticleExplosion.prototype._ctor - = cc.ParticleSmoke.prototype._ctor - = cc.ParticleRain.prototype._ctor - = cc.ParticleSnow.prototype._ctor - = function(){ - this.init(); - }; +cc.ParticleFire.prototype._ctor = dummyCtor; +cc.ParticleFireworks.prototype._ctor = dummyCtor; +cc.ParticleSun.prototype._ctor = dummyCtor; +cc.ParticleGalaxy.prototype._ctor = dummyCtor; +cc.ParticleMeteor.prototype._ctor = dummyCtor; +cc.ParticleFlower.prototype._ctor = dummyCtor; +cc.ParticleSpiral.prototype._ctor = dummyCtor; +cc.ParticleExplosion.prototype._ctor = dummyCtor; +cc.ParticleSmoke.prototype._ctor = dummyCtor; +cc.ParticleRain.prototype._ctor = dummyCtor; +cc.ParticleSnow.prototype._ctor = dummyCtor; + /************************ ProgressTimer *************************/ @@ -345,14 +348,14 @@ _p._ctor = function(sprite){ _p = cc.TextFieldTTF.prototype; _p._ctor = function(placeholder, dimensions, alignment, fontName, fontSize){ if(fontSize !== undefined){ - this.initWithPlaceHolder("", dimensions, alignment, fontName, fontSize); + this.initWithPlaceHolder('', dimensions, alignment, fontName, fontSize); if(placeholder) this._placeHolder = placeholder; } else if(fontName === undefined && alignment !== undefined){ fontName = arguments[1]; fontSize = arguments[2]; - this.initWithString("", fontName, fontSize); + this.initWithString('', fontName, fontSize); if(placeholder) this._placeHolder = placeholder; } @@ -382,7 +385,7 @@ _p._ctor = function(tilesetInfo, layerInfo, mapInfo){ }; _p = cc.TMXTiledMap.prototype; -_p._ctor = function(tmxFile,resourcePath){ +_p._ctor = function(tmxFile, resourcePath){ if(resourcePath !== undefined){ this.initWithXML(tmxFile,resourcePath); }else if(tmxFile !== undefined){ @@ -440,63 +443,62 @@ cc.CatmullRomTo.prototype._ctor = cc.CatmullRomBy.prototype._ctor = function(dt, points !== undefined && this.initWithDuration(dt, points); }; -_p = cc.ActionEase.prototype; -_p._ctor = function(action) { +var easeCtor = function(action) { action !== undefined && this.initWithAction(action); }; -cc.EaseExponentialIn._ctor - = cc.EaseExponentialOut._ctor - = cc.EaseExponentialInOut._ctor - = cc.EaseSineIn._ctor - = cc.EaseSineOut._ctor - = cc.EaseSineInOut._ctor - = cc.EaseBounce._ctor - = cc.EaseBounceIn._ctor - = cc.EaseBounceOut._ctor - = cc.EaseBounceInOut._ctor - = cc.EaseBackIn._ctor - = cc.EaseBackOut._ctor - = cc.EaseBackInOut._ctor - = _p._ctor; -_p = cc.EaseRateAction.prototype; -_p._ctor = function(action, rate) { +cc.ActionEase.prototype._ctor = easeCtor; +cc.EaseExponentialIn.prototype._ctor = easeCtor; +cc.EaseExponentialOut.prototype._ctor = easeCtor; +cc.EaseExponentialInOut.prototype._ctor = easeCtor; +cc.EaseSineIn.prototype._ctor = easeCtor; +cc.EaseSineOut.prototype._ctor = easeCtor; +cc.EaseSineInOut.prototype._ctor = easeCtor; +cc.EaseBounce.prototype._ctor = easeCtor; +cc.EaseBounceIn.prototype._ctor = easeCtor; +cc.EaseBounceOut.prototype._ctor = easeCtor; +cc.EaseBounceInOut.prototype._ctor = easeCtor; +cc.EaseBackIn.prototype._ctor = easeCtor; +cc.EaseBackOut.prototype._ctor = easeCtor; +cc.EaseBackInOut.prototype._ctor = easeCtor; + +var easeRateCtor = function(action, rate) { rate !== undefined && this.initWithAction(action, rate); }; -cc.EaseIn.prototype._ctor - = cc.EaseOut.prototype._ctor - = cc.EaseInOut.prototype._ctor - = _p._ctor; +cc.EaseRateAction.prototype._ctor = easeRateCtor; +cc.EaseIn.prototype._ctor = easeRateCtor; +cc.EaseOut.prototype._ctor = easeRateCtor; +cc.EaseInOut.prototype._ctor = easeRateCtor; -_p = cc.EaseElastic.prototype; -_p._ctor = function(action, period) { +var easeElasticCtor = function(action, period) { if( action ) { period !== undefined ? this.initWithAction(action, period) : this.initWithAction(action); } }; -cc.EaseElasticIn._ctor - = cc.EaseElasticOut._ctor - = cc.EaseElasticInOut._ctor - = _p._ctor; - +cc.EaseElastic.prototype._ctor = easeElasticCtor; +cc.EaseElasticIn.prototype._ctor = easeElasticCtor; +cc.EaseElasticOut.prototype._ctor = easeElasticCtor; +cc.EaseElasticInOut.prototype._ctor = easeElasticCtor; cc.ReuseGrid.prototype._ctor = function(times) { times !== undefined && this.initWithTimes(times); }; -cc.GridAction.prototype._ctor - = cc.Grid3DAction.prototype._ctor - = cc.TiledGrid3DAction.prototype._ctor - = cc.PageTurn3D.prototype._ctor - = cc.FadeOutTRTiles.prototype._ctor - = cc.FadeOutBLTiles.prototype._ctor - = cc.FadeOutUpTiles.prototype._ctor - = cc.FadeOutDownTiles.prototype._ctor - = function(duration, gridSize) { +var durationCtor = function(duration, gridSize) { gridSize && this.initWithDuration(duration, gridSize); }; +cc.GridAction.prototype._ctor = durationCtor; +cc.Grid3DAction.prototype._ctor = durationCtor; +cc.TiledGrid3DAction.prototype._ctor = durationCtor; +cc.PageTurn3D.prototype._ctor = durationCtor; +cc.FadeOutTRTiles.prototype._ctor = durationCtor; +cc.FadeOutBLTiles.prototype._ctor = durationCtor; +cc.FadeOutUpTiles.prototype._ctor = durationCtor; +cc.FadeOutDownTiles.prototype._ctor = durationCtor; + + cc.Twirl.prototype._ctor = function(duration, gridSize, position, twirls, amplitude) { amplitude !== undefined && this.initWithDuration(duration, gridSize, position, twirls, amplitude); }; @@ -521,9 +523,7 @@ cc.Lens3D.prototype._ctor = function(duration, gridSize, position, radius) { radius !== undefined && this.initWithDuration(duration, gridSize, position, radius); }; -cc.FlipY3D.prototype._ctor - = cc.FlipX3D.prototype._ctor - = function(duration) { +cc.FlipY3D.prototype._ctor = cc.FlipX3D.prototype._ctor = function(duration) { duration !== undefined && this.initWithDuration(duration, cc.size(1, 1)); }; @@ -566,13 +566,19 @@ cc.ActionInterval.prototype._ctor = function(d) { }; cc.Sequence.prototype._ctor = function(tempArray) { - var paramArray = (tempArray instanceof Array) ? tempArray : Array.prototype.slice.call(arguments); + var paramArray = (tempArray instanceof Array) ? tempArray : arguments; var last = paramArray.length - 1; if ((last >= 0) && (paramArray[last] == null)) - cc.log("parameters should not be ending with null in Javascript"); + cc.log('parameters should not be ending with null in Javascript'); if (last >= 0) { - this.init(paramArray); + var prev = paramArray[0]; + for (var i = 1; i < last; i++) { + if (paramArray[i]) { + prev = cc.Sequence.create(prev, paramArray[i]); + } + } + this.initWithTwoActions(prev, paramArray[last]); } }; @@ -585,13 +591,19 @@ cc.RepeatForever.prototype._ctor = function(action) { }; cc.Spawn.prototype._ctor = function(tempArray) { - var paramArray = (tempArray instanceof Array) ? tempArray : Array.prototype.slice.call(arguments); + var paramArray = (tempArray instanceof Array) ? tempArray : arguments; var last = paramArray.length - 1; if ((last >= 0) && (paramArray[last] == null)) - cc.log("parameters should not be ending with null in Javascript"); + cc.log('parameters should not be ending with null in Javascript'); if (last >= 0) { - this.init(paramArray); + var prev = paramArray[0]; + for (var i = 1; i < last; i++) { + if (paramArray[i]) { + prev = cc.Spawn.create(prev, paramArray[i]); + } + } + this.initWithTwoActions(prev, paramArray[last]); } }; @@ -773,7 +785,7 @@ cc.LabelAtlas.prototype._ctor = function(strText, charMapFile, itemWidth, itemHe }; cc.LabelBMFont.prototype._ctor = function(str, fntFile, width, alignment, imageOffset) { - str = str || ""; + str = str || ''; if( fntFile ) { width = width || 0; alignment = alignment === undefined ? cc.TEXT_ALIGNMENT_LEFT : alignment; @@ -783,12 +795,12 @@ cc.LabelBMFont.prototype._ctor = function(str, fntFile, width, alignment, imageO }; cc.LabelTTF.prototype._ctor = function(text, fontName, fontSize, dimensions, hAlignment, vAlignment) { - text = text || ""; + text = text || ''; if (fontName && fontName instanceof cc.FontDefinition) { this.initWithStringAndTextDefinition(text, fontName); } else { - fontName = fontName || ""; + fontName = fontName || ''; fontSize = fontSize || 16; dimensions = dimensions || cc.size(0,0); hAlignment = hAlignment === undefined ? cc.TEXT_ALIGNMENT_LEFT : hAlignment; @@ -824,73 +836,36 @@ cc.GLProgram.prototype._ctor = function(vShaderFileName, fShaderFileName) { * ************************************************************/ -cc.Sprite._create = cc.Sprite.create; /** * Create a sprite with image path or frame name or texture or spriteFrame. * @constructs - * @param {String|cc.Texture2D|cc.SpriteFrame} fileName The string which indicates a path to image file, e.g., "scene1/monster.png". + * @param {String|cc.Texture2D|cc.SpriteFrame} fileName The string which indicates a path to image file, e.g., 'scene1/monster.png'. * @param {cc.Rect} rect Only the contents inside rect of pszFileName's texture will be applied for this sprite. * @return {cc.Sprite} A valid sprite object * @example * * 1.Create a sprite with image path and rect - * var sprite1 = cc.Sprite.create("res/HelloHTML5World.png"); - * var sprite2 = cc.Sprite.create("res/HelloHTML5World.png",cc.rect(0,0,480,320)); + * var sprite1 = cc.Sprite.create('res/HelloHTML5World.png'); + * var sprite2 = cc.Sprite.create('res/HelloHTML5World.png',cc.rect(0,0,480,320)); * - * 2.Create a sprite with a sprite frame name. Must add "#" before frame name. + * 2.Create a sprite with a sprite frame name. Must add '#' before frame name. * var sprite = cc.Sprite.create('#grossini_dance_01.png'); * * 3.Create a sprite with a sprite frame - * var spriteFrame = cc.spriteFrameCache.getSpriteFrame("grossini_dance_01.png"); + * var spriteFrame = cc.spriteFrameCache.getSpriteFrame('grossini_dance_01.png'); * var sprite = cc.Sprite.create(spriteFrame); * * 4.Create a sprite with an exsiting texture contained in a CCTexture2D object * After creation, the rect will be the size of the texture, and the offset will be (0,0). - * var texture = cc.textureCache.addImage("HelloHTML5World.png"); + * var texture = cc.textureCache.addImage('HelloHTML5World.png'); * var sprite1 = cc.Sprite.create(texture); * var sprite2 = cc.Sprite.create(texture, cc.rect(0,0,480,320)); * */ cc.Sprite.create = function (fileName, rect) { - var sprite; - - if (arguments.length == 0) { - sprite = cc.Sprite._create(); - return sprite; - } - - if (typeof(fileName) === "string") { - if (fileName[0] === "#") { - //init with a sprite frame name - var frameName = fileName.substr(1, fileName.length - 1); - var spriteFrame = cc.spriteFrameCache.getSpriteFrame(frameName); - sprite = cc.Sprite.createWithSpriteFrame(spriteFrame); - } else { - // Create with filename and rect - sprite = rect ? cc.Sprite._create(fileName, rect) : cc.Sprite._create(fileName); - } - if (sprite) - return sprite; - else return null; - } - - if (typeof(fileName) === "object") { - if (fileName instanceof cc.Texture2D) { - //init with texture and rect - sprite = rect ? cc.Sprite.createWithTexture(fileName, rect) : cc.Sprite.createWithTexture(fileName); - } else if (fileName instanceof cc.SpriteFrame) { - //init with a sprite frame - sprite = cc.Sprite.createWithSpriteFrame(fileName); - } - if (sprite) - return sprite; - else return null; - } - - return null; + return new cc.Sprite(fileName, rect); }; -cc.LabelTTF._create = cc.LabelTTF.create; /** * creates a cc.LabelTTF from a font name, alignment, dimension and font size * @param {String} text @@ -906,30 +881,15 @@ cc.LabelTTF._create = cc.LabelTTF.create; * var myLabel = cc.LabelTTF.create('label text', 'Times New Roman', 32, cc.size(320,32), cc.TEXT_ALIGNMENT_LEFT); * 2. * var fontDef = new cc.FontDefinition(); - * fontDef.fontName = "Arial"; - * fontDef.fontSize = "32"; + * fontDef.fontName = 'Arial'; + * fontDef.fontSize = '32'; * var myLabel = cc.LabelTTF.create('label text', fontDef); */ cc.LabelTTF.create = function (text, fontName, fontSize, dimensions, hAlignment, vAlignment) { - var label; - if (fontName && fontName instanceof cc.FontDefinition) { - label = cc.LabelTTF.createWithFontDefinition(text, fontName); - } - else { - fontName = fontName || ""; - fontSize = fontSize || 16; - dimensions = dimensions || cc.size(0, 0); - hAlignment = hAlignment == undefined ? cc.TEXT_ALIGNMENT_CENTER : hAlignment; - vAlignment = vAlignment == undefined ? cc.VERTICAL_TEXT_ALIGNMENT_TOP : vAlignment; - label = cc.LabelTTF._create(text, fontName, fontSize, dimensions, hAlignment, vAlignment); - } - if (label) - return label; - else return null; + return new cc.LabelTTF(text, fontName, fontSize, dimensions, hAlignment, vAlignment); }; -cc.SpriteBatchNode._create = cc.SpriteBatchNode.create; /** *

* creates a cc.SpriteBatchNodeCanvas with a file image (.png, .jpg etc) with a default capacity of 29 children.
@@ -942,23 +902,17 @@ cc.SpriteBatchNode._create = cc.SpriteBatchNode.create; * @example * 1. * //create a SpriteBatchNode with image path - * var spriteBatchNode = cc.SpriteBatchNode.create("res/animations/grossini.png", 50); + * var spriteBatchNode = cc.SpriteBatchNode.create('res/animations/grossini.png', 50); * 2. * //create a SpriteBatchNode with texture - * var texture = cc.textureCache.addImage("res/animations/grossini.png"); + * var texture = cc.textureCache.addImage('res/animations/grossini.png'); * var spriteBatchNode = cc.SpriteBatchNode.create(texture,50); */ cc.SpriteBatchNode.create = function(fileName, capacity){ - if (typeof(fileName) == "string") - return cc.SpriteBatchNode._create(fileName); - else if (fileName instanceof cc.Texture2D) { - return isNaN(capacity) ? cc.SpriteBatchNode.createWithTexture(fileName) : cc.SpriteBatchNode.createWithTexture(fileName,capacity); - } - return null; + return new cc.SpriteBatchNode(fileName, capacity); }; -cc.SpriteFrame._create = cc.SpriteFrame.create; /** *

* Create a cc.SpriteFrame with a texture filename, rect, rotated, offset and originalSize in pixels.
@@ -973,31 +927,17 @@ cc.SpriteFrame._create = cc.SpriteFrame.create; * @example * 1. * //Create a cc.SpriteFrame with image path - * var frame1 = cc.SpriteFrame.create("res/grossini_dance.png",cc.rect(0,0,90,128)); - * var frame2 = cc.SpriteFrame.create("res/grossini_dance.png",cc.rect(0,0,90,128),false,0,cc.size(90,128)); + * var frame1 = cc.SpriteFrame.create('res/grossini_dance.png',cc.rect(0,0,90,128)); + * var frame2 = cc.SpriteFrame.create('res/grossini_dance.png',cc.rect(0,0,90,128),false,0,cc.size(90,128)); * * 2. * //Create a cc.SpriteFrame with a texture, rect, rotated, offset and originalSize in pixels. - * var texture = cc.textureCache.addImage("res/grossini_dance.png"); + * var texture = cc.textureCache.addImage('res/grossini_dance.png'); * var frame1 = cc.SpriteFrame.create(texture, cc.rect(0,0,90,128)); * var frame2 = cc.SpriteFrame.create(texture, cc.rect(0,0,90,128),false,0,cc.size(90,128)); */ cc.SpriteFrame.create = function(fileName, rect, rotated, offset, originalSize){ - var spriteFrame = null; - switch (arguments.length) { - case 2: - if (fileName instanceof cc.Texture2D) - spriteFrame = cc.SpriteFrame.createWithTexture(fileName, rect); - else spriteFrame = cc.SpriteFrame._create(fileName, rect); - break; - case 5: - spriteFrame = cc.SpriteFrame._create(fileName, rect, rotated, offset, originalSize); - break; - default: - throw "Argument must be non-nil "; - break; - } - return spriteFrame; + return new cc.SpriteFrame(fileName, rect, rotated, offset, originalSize); }; @@ -1011,17 +951,10 @@ cc.ParticleSystem._create = cc.ParticleSystem.create; * @return {cc.ParticleSystem} */ cc.ParticleSystem.create = function(plistFile){ - var particleSystem =null; - if (typeof(plistFile) === "number") { - particleSystem = cc.ParticleSystem.createWithTotalParticles(plistFile); - }else if(typeof(plistFile) === "string" || typeof(plistFile) === "object"){ - particleSystem = cc.ParticleSystem._create(plistFile); - } - return particleSystem; + return new cc.ParticleSystem(plistFile); }; -cc.ParticleBatchNode._create = cc.ParticleBatchNode.create; /** * initializes the particle system with the name of a file on disk (for a list of supported formats look at the cc.Texture2D class), a capacity of particles * @param {String|cc.Texture2D} fileImage @@ -1030,24 +963,18 @@ cc.ParticleBatchNode._create = cc.ParticleBatchNode.create; * @example * 1. * //Create a cc.ParticleBatchNode with image path and capacity - * var particleBatchNode = cc.ParticleBatchNode.create("res/grossini_dance.png",30); + * var particleBatchNode = cc.ParticleBatchNode.create('res/grossini_dance.png',30); * * 2. * //Create a cc.ParticleBatchNode with a texture and capacity - * var texture = cc.TextureCache.getInstance().addImage("res/grossini_dance.png"); + * var texture = cc.TextureCache.getInstance().addImage('res/grossini_dance.png'); * var particleBatchNode = cc.ParticleBatchNode.create(texture, 30); */ cc.ParticleBatchNode.create = function(fileImage, capacity){ - if (typeof(fileImage) == "string") - return cc.ParticleBatchNode._create(fileImage); - else if (fileImage instanceof cc.Texture2D) { - return isNaN(capacity) ? cc.ParticleBatchNode.createWithTexture(fileImage) : cc.ParticleBatchNode.createWithTexture(fileImage, capacity); - } - return null; + return new cc.ParticleBatchNode(fileImage, capacity); }; -cc.TMXTiledMap._create = cc.TMXTiledMap.create; /** * Creates a TMX Tiled Map with a TMX file or content string. * Implementation cc.TMXTiledMap @@ -1058,21 +985,16 @@ cc.TMXTiledMap._create = cc.TMXTiledMap.create; * //example * 1. * //create a TMXTiledMap with file name - * var tmxTiledMap = cc.TMXTiledMap.create("res/orthogonal-test1.tmx"); + * var tmxTiledMap = cc.TMXTiledMap.create('res/orthogonal-test1.tmx'); * 2. * //create a TMXTiledMap with content string and resource path - * var resources = "res/TileMaps"; - * var filePath = "res/TileMaps/orthogonal-test1.tmx"; + * var resources = 'res/TileMaps'; + * var filePath = 'res/TileMaps/orthogonal-test1.tmx'; * var xmlStr = cc.loader.getRes(filePath); * var tmxTiledMap = cc.TMXTiledMap.create(xmlStr, resources); */ cc.TMXTiledMap.create = function (tmxFile, resourcePath) { - if(resourcePath != undefined){ - return cc.TMXTiledMap.createWithXML(tmxFile, resourcePath); - } else if (tmxFile != undefined) { - return cc.TMXTiledMap._create(tmxFile); - } - return null; + return new cc.TMXTiledMap(tmxFile, resourcePath); }; // MenuItems @@ -1121,20 +1043,24 @@ cc.MenuItemToggle.create = function(/* var args */) { // LabelAtlas -cc.LabelAtlas.create = function( a,b,c,d,e ) { - - var n = arguments.length; - - if ( n == 5) { - return cc.LabelAtlas._create(a,b,c,d,e.charCodeAt(0)); - } else { - return cc.LabelAtlas._create.apply(this, arguments); - } +cc.LabelAtlas.create = function(strText, charMapFile, itemWidth, itemHeight, startCharMap) { + return new cc.LabelAtlas(strText, charMapFile, itemWidth, itemHeight, startCharMap); }; // LayerMultiplex -cc.LayerMultiplex.create = cc.LayerMultiplex.createWithArray; +cc.LayerMultiplex.create = cc.LayerMultiplex.createWithArray = function (layers) { + var result = new cc.LayerMultiplex(); + if(layers !== undefined){ + if (layers instanceof Array) + cc.LayerMultiplex.prototype.initWithArray.call(result, layers); + else + cc.LayerMultiplex.prototype.initWithArray.call(result, Array.prototype.slice.call(arguments)); + }else{ + cc.LayerMultiplex.prototype.init.call(result); + } + return result; +}; /** * Creates an animation. @@ -1149,7 +1075,7 @@ cc.LayerMultiplex.create = cc.LayerMultiplex.createWithArray; * * 2.Create an animation with sprite frames , delay and loops. * var spriteFrames = []; - * var frame = cache.getSpriteFrame("grossini_dance_01.png"); + * var frame = cache.getSpriteFrame('grossini_dance_01.png'); * spriteFrames.push(frame); * var animation1 = cc.Animation.create(spriteFrames); * var animation2 = cc.Animation.create(spriteFrames, 0.2); @@ -1178,7 +1104,7 @@ cc.Animation.create = function (frames, delay, loops) { cc.Menu.create = function(menuItems) { if((arguments.length > 0) && (arguments[arguments.length-1] == null)) - cc.log("parameters should not be ending with null in Javascript"); + cc.log('parameters should not be ending with null in Javascript'); var argc = arguments.length, items = []; @@ -1199,4 +1125,14 @@ cc.Menu.create = function(menuItems) { return cc.Menu._create.apply(null, items); }; +cc.GLProgram.create = function (vShaderFileName, fShaderFileName) { + return new cc.GLProgram(vShaderFileName, fShaderFileName); +}; + +cc.GLProgram.createWithString = function (vShader, fShader) { + var program = new cc.GLProgram(); + program.initWithByteArrays(vShader, fShader); + return program; +}; + cc.TMXLayer.prototype.tileFlagsAt = cc.TMXLayer.prototype.getTileFlagsAt; diff --git a/tests/js-tests/src/CocosNodeTest/CocosNodeTest.js b/tests/js-tests/src/CocosNodeTest/CocosNodeTest.js index abb3d6b3d9..3150879230 100644 --- a/tests/js-tests/src/CocosNodeTest/CocosNodeTest.js +++ b/tests/js-tests/src/CocosNodeTest/CocosNodeTest.js @@ -1073,7 +1073,7 @@ var arrayOfNodeTest = [ if ('opengl' in cc.sys.capabilities) { cc.sys.isNative || arrayOfNodeTest.push(CameraCenterTest); - arrayOfNodeTest.push(CameraOrbitTest); + cc.sys.isNative || arrayOfNodeTest.push(CameraOrbitTest); cc.sys.isNative || arrayOfNodeTest.push(CameraZoomTest); arrayOfNodeTest.push(NodeOpaqueTest); arrayOfNodeTest.push(NodeNonOpaqueTest); diff --git a/tests/js-tests/src/ExtensionsTest/AssetsManagerTest/AssetsManagerTest.js b/tests/js-tests/src/ExtensionsTest/AssetsManagerTest/AssetsManagerTest.js index a5f327fb6c..9ac57a1962 100644 --- a/tests/js-tests/src/ExtensionsTest/AssetsManagerTest/AssetsManagerTest.js +++ b/tests/js-tests/src/ExtensionsTest/AssetsManagerTest/AssetsManagerTest.js @@ -101,6 +101,79 @@ var AssetsManagerLoaderScene = TestScene.extend({ _percentByFile : 0, _loadingBar : null, _fileLoadingBar : null, + _callback : null, + + cb: function(event) { + var scene; + switch (event.getEventCode()) + { + case jsb.EventAssetsManager.ERROR_NO_LOCAL_MANIFEST: + cc.log("No local manifest file found, skip assets update."); + scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); + cc.director.runScene(scene); + break; + case jsb.EventAssetsManager.UPDATE_PROGRESSION: + this._percent = event.getPercent(); + this._percentByFile = event.getPercentByFile(); + + var msg = event.getMessage(); + if (msg) { + cc.log(msg); + } + cc.log(this._percent + "%"); + break; + case jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST: + case jsb.EventAssetsManager.ERROR_PARSE_MANIFEST: + cc.log("Fail to download manifest file, update skipped."); + scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); + cc.director.runScene(scene); + break; + case jsb.EventAssetsManager.ALREADY_UP_TO_DATE: + case jsb.EventAssetsManager.UPDATE_FINISHED: + cc.log("Update finished. " + event.getMessage()); + + // Restart the game to update scripts in scene 3 + if (currentScene == 2) { + // Register the manifest's search path + var searchPaths = this._am.getLocalManifest().getSearchPaths(); + // This value will be retrieved and appended to the default search path during game startup, + // please refer to samples/js-tests/main.js for detailed usage. + // !!! Re-add the search paths in main.js is very important, otherwise, new scripts won't take effect. + cc.sys.localStorage.setItem("Scene3SearchPaths", JSON.stringify(searchPaths)); + // Restart the game to make all scripts take effect. + cc.game.restart(); + } + else { + scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); + cc.director.runScene(scene); + } + break; + case jsb.EventAssetsManager.UPDATE_FAILED: + cc.log("Update failed. " + event.getMessage()); + + __failCount ++; + if (__failCount < 5) + { + this._am.downloadFailedAssets(); + } + else + { + cc.log("Reach maximum fail count, exit update process"); + __failCount = 0; + scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); + cc.director.runScene(scene); + } + break; + case jsb.EventAssetsManager.ERROR_UPDATING: + cc.log("Asset update error: " + event.getAssetId() + ", " + event.getMessage()); + break; + case jsb.EventAssetsManager.ERROR_DECOMPRESS: + cc.log(event.getMessage()); + break; + default: + break; + } + }, runThisTest : function () { var manifestPath = sceneManifests[currentScene]; @@ -126,7 +199,7 @@ var AssetsManagerLoaderScene = TestScene.extend({ layer.addChild(this._fileLoadingBar); this._am = new jsb.AssetsManager(manifestPath, storagePath); - this._am.retain(); + // this._am.retain(); if (!this._am.getLocalManifest().isLoaded()) { @@ -136,78 +209,8 @@ var AssetsManagerLoaderScene = TestScene.extend({ } else { - var that = this; - var listener = new jsb.EventListenerAssetsManager(this._am, function(event) { - var scene; - switch (event.getEventCode()) - { - case jsb.EventAssetsManager.ERROR_NO_LOCAL_MANIFEST: - cc.log("No local manifest file found, skip assets update."); - scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); - cc.director.runScene(scene); - break; - case jsb.EventAssetsManager.UPDATE_PROGRESSION: - that._percent = event.getPercent(); - that._percentByFile = event.getPercentByFile(); - - var msg = event.getMessage(); - if (msg) { - cc.log(msg); - } - cc.log(that._percent + "%"); - break; - case jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST: - case jsb.EventAssetsManager.ERROR_PARSE_MANIFEST: - cc.log("Fail to download manifest file, update skipped."); - scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); - cc.director.runScene(scene); - break; - case jsb.EventAssetsManager.ALREADY_UP_TO_DATE: - case jsb.EventAssetsManager.UPDATE_FINISHED: - cc.log("Update finished. " + event.getMessage()); - - // Restart the game to update scripts in scene 3 - if (currentScene == 2) { - // Register the manifest's search path - var searchPaths = that._am.getLocalManifest().getSearchPaths(); - // This value will be retrieved and appended to the default search path during game startup, - // please refer to samples/js-tests/main.js for detailed usage. - // !!! Re-add the search paths in main.js is very important, otherwise, new scripts won't take effect. - cc.sys.localStorage.setItem("Scene3SearchPaths", JSON.stringify(searchPaths)); - // Restart the game to make all scripts take effect. - cc.game.restart(); - } - else { - scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); - cc.director.runScene(scene); - } - break; - case jsb.EventAssetsManager.UPDATE_FAILED: - cc.log("Update failed. " + event.getMessage()); - - __failCount ++; - if (__failCount < 5) - { - that._am.downloadFailedAssets(); - } - else - { - cc.log("Reach maximum fail count, exit update process"); - __failCount = 0; - scene = new AssetsManagerTestScene(backgroundPaths[currentScene]); - cc.director.runScene(scene); - } - break; - case jsb.EventAssetsManager.ERROR_UPDATING: - cc.log("Asset update error: " + event.getAssetId() + ", " + event.getMessage()); - break; - case jsb.EventAssetsManager.ERROR_DECOMPRESS: - cc.log(event.getMessage()); - break; - default: - break; - } - }); + this._callback = this.cb.bind(this); + var listener = new jsb.EventListenerAssetsManager(this._am, this._callback); cc.eventManager.addListener(listener, 1); @@ -222,10 +225,5 @@ var AssetsManagerLoaderScene = TestScene.extend({ updateProgress : function () { this._loadingBar.setPercent(this._percent); this._fileLoadingBar.setPercent(this._percentByFile); - }, - - onExit : function () { - this._am.release(); - this._super(); } }); \ No newline at end of file diff --git a/tests/js-tests/src/XHRTest/XHRTest.js b/tests/js-tests/src/XHRTest/XHRTest.js index 2334255201..994a2c58ce 100644 --- a/tests/js-tests/src/XHRTest/XHRTest.js +++ b/tests/js-tests/src/XHRTest/XHRTest.js @@ -35,8 +35,8 @@ function streamXHREventsToLabel ( xhr, label, textbox, method ) { // Simple events ['loadstart', 'abort', 'error', 'load', 'loadend', 'timeout'].forEach(function (eventname) { xhr["on" + eventname] = function () { - label.string += "\nEvent : " + eventname - } + label.string += "\nEvent : " + eventname; + }; }); // Special event @@ -44,11 +44,11 @@ function streamXHREventsToLabel ( xhr, label, textbox, method ) { if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status <= 207)) { var httpStatus = xhr.statusText; var response = xhr.responseText.substring(0, 100) + "..."; - textbox.string = method + " Response (100 chars):\n" - textbox.string += response - label.string += "\nStatus: Got " + method + " response! " + httpStatus + textbox.string = method + " Response (100 chars):\n"; + textbox.string += response; + label.string += "\nStatus: Got " + method + " response! " + httpStatus; } - } + }; } @@ -87,7 +87,7 @@ var XHRTestLayer = cc.Layer.extend({ var statusGetLabel = new cc.LabelTTF("Status:", "Thonburi", 12); this.addChild(statusGetLabel, 1); - statusGetLabel.x = 10 + statusGetLabel.x = 10; statusGetLabel.y = winSize.height - 100; ensureLeftAligned(statusGetLabel); statusGetLabel.setString("Status: Send Get Request to httpbin.org");