From 0679275477e5e3da11dfd8af8f24a0b57eaed579 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 29 Jul 2014 14:38:15 +0800 Subject: [PATCH 1/3] spriteFrame & custom props's bug --- spritebuilder/CCBAnimationManager.cpp | 4 ++-- spritebuilder/CCBReader.cpp | 12 ++++++++++-- spritebuilder/CCNodeLoader.cpp | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/spritebuilder/CCBAnimationManager.cpp b/spritebuilder/CCBAnimationManager.cpp index 8da4fcd..9969698 100644 --- a/spritebuilder/CCBAnimationManager.cpp +++ b/spritebuilder/CCBAnimationManager.cpp @@ -361,7 +361,7 @@ ActionInterval* CCBAnimationManager::getAction(CCBKeyframe *pKeyframe0, CCBKeyfr return Sequence::createWithTwoActions(DelayTime::create(duration), Hide::create()); } } - else if (propName == "displayFrame") + else if (propName == "displayFrame" || propName == "spriteFrame") { return Sequence::createWithTwoActions(DelayTime::create(duration), CCBSetSpriteFrame::create(static_cast(pKeyframe1->getObject()))); @@ -503,7 +503,7 @@ void CCBAnimationManager::setAnimatedProperty(const std::string& propName, Node unsigned char opacity = value.asFloat() * 255.0f;//value.asByte(); pNode->setOpacity(opacity); } - else if (propName == "displayFrame") + else if (propName == "displayFrame" || propName == "spriteFrame") { static_cast(pNode)->setSpriteFrame(static_cast(obj)); } diff --git a/spritebuilder/CCBReader.cpp b/spritebuilder/CCBReader.cpp index c6ff23b..bc9de1d 100755 --- a/spritebuilder/CCBReader.cpp +++ b/spritebuilder/CCBReader.cpp @@ -68,10 +68,14 @@ float CCBReader::getPTMRatio() { void CCBReader::setupSpriteBuilder(const char* resourcePath, float ptmRatio) { _ptmRatio = ptmRatio; + std::vector searchPath; searchPath.push_back("Published-iOS"); FileUtils::getInstance()->setSearchPaths(searchPath); -// FileUtils::getInstance()->addSearchPath("Published-iOS") + char docPath[256] = {0}; + sprintf(docPath, "%s/Published-iOS", FileUtils::getInstance()->getWritablePath().c_str()); + FileUtils::getInstance()->addSearchPath(docPath, true); + FileUtils::getInstance()->addSearchResolutionsOrder(resourcePath); FileUtils::getInstance()->loadFilenameLookupDictionaryFromFile("fileLookup.plist"); @@ -1409,8 +1413,9 @@ CCBKeyframe* CCBReader::readKeyframe(PropertyType type) std::string spriteFile = readCachedString(); //std::string spriteSheet = readCachedString(); - SpriteFrame* spriteFrame; + SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(spriteFile); //if (spriteSheet.length() == 0) + if (spriteFrame == nullptr) { spriteFile = _CCBRootPath + spriteFile; @@ -1435,6 +1440,9 @@ CCBKeyframe* CCBReader::readKeyframe(PropertyType type) spriteFrame = frameCache->getSpriteFrameByName(spriteFile.c_str()); } */ + + keyframe->setObject(spriteFrame); + } else { CCASSERT(false, "Unknown keyframe type!"); } diff --git a/spritebuilder/CCNodeLoader.cpp b/spritebuilder/CCNodeLoader.cpp index 97fdae2..a179992 100644 --- a/spritebuilder/CCNodeLoader.cpp +++ b/spritebuilder/CCNodeLoader.cpp @@ -127,10 +127,10 @@ void NodeLoader::parseProperties(Node * pNode, Node * pParent, CCBReader * ccbRe } else if (isExtraProp && pNode == ccbReader->getAnimationManager()->getRootNode()) { - __Array *extraPropsNames = static_cast<__Array*>(pNode->getUserObject()); + CCSet *extraPropsNames = static_cast(pNode->getUserObject()); if (! extraPropsNames) { - extraPropsNames = Array::create(); + extraPropsNames = CCSet::create(); pNode->setUserObject(extraPropsNames); } From 10b31a32e7a737519c6729e4657df94062891ef7 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 3 Aug 2014 20:03:05 +0800 Subject: [PATCH 2/3] add property name to replace tag at 3.2 --- spritebuilder/CCNodeLoader.cpp | 12 ++++++++++-- spritebuilder/CCNodeLoader.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spritebuilder/CCNodeLoader.cpp b/spritebuilder/CCNodeLoader.cpp index a179992..370fdca 100644 --- a/spritebuilder/CCNodeLoader.cpp +++ b/spritebuilder/CCNodeLoader.cpp @@ -1293,8 +1293,16 @@ void NodeLoader::onHandlePropTypeFntFile(Node * pNode, Node * pParent, const cha void NodeLoader::onHandlePropTypeString(Node * pNode, Node * pParent, const char* pPropertyName, const char * pString, CCBReader * ccbReader) { // ASSERT_FAIL_UNEXPECTED_PROPERTY(pPropertyName); - // It may be a custom property, add it to custom property dictionary. - _customProperties[pPropertyName] = Value(pString); + if(strcmp(pPropertyName, PROPERTY_NAME) == 0) { +#if COCOS2D_VERSION >= 0x030200 + pNode->setName(pString); +#else + CCLOG("NOT supported setName() on current cocos2d version"); +#endif + }else { + // It may be a custom property, add it to custom property dictionary. + _customProperties[pPropertyName] = Value(pString); + } } void NodeLoader::onHandlePropTypeText(Node * pNode, Node * pParent, const char* pPropertyName, const char * pText, CCBReader * ccbReader) { diff --git a/spritebuilder/CCNodeLoader.h b/spritebuilder/CCNodeLoader.h index 8604c4b..2478f0d 100644 --- a/spritebuilder/CCNodeLoader.h +++ b/spritebuilder/CCNodeLoader.h @@ -19,6 +19,7 @@ namespace spritebuilder { #define PROPERTY_TAG "tag" #define PROPERTY_IGNOREANCHORPOINTFORPOSITION "ignoreAnchorPointForPosition" #define PROPERTY_VISIBLE "visible" +#define PROPERTY_NAME "name" #define ASSERT_FAIL_UNEXPECTED_PROPERTY(PROPERTY) cocos2d::log("Unexpected property: '%s'!\n", PROPERTY); assert(false) #define ASSERT_FAIL_UNEXPECTED_PROPERTYTYPE(PROPERTYTYPE) cocos2d::log("Unexpected property type: '%d'!\n", PROPERTYTYPE); assert(false) From e3441f32802da36320a7284c6bec5b6730b22451 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 6 Sep 2014 01:18:04 +0800 Subject: [PATCH 3/3] set properties's bug --- spritebuilder/CCNodeLoader.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spritebuilder/CCNodeLoader.cpp b/spritebuilder/CCNodeLoader.cpp index 370fdca..1a26aff 100644 --- a/spritebuilder/CCNodeLoader.cpp +++ b/spritebuilder/CCNodeLoader.cpp @@ -62,7 +62,19 @@ void NodeLoader::parseProperties(Node * pNode, Node * pParent, CCBReader * ccbRe // Skip properties that doesn't have a value to override CCSet* extraPropsNames = (CCSet*)pNode->getUserObject(); - setProp &= extraPropsNames->containsObject(CCString::create(propertyName)); + bool foundProperty = false; + __SetIterator it; + for( it = extraPropsNames->begin(); it != extraPropsNames->end(); ++it) { + __String *propName = (__String*)*it; + if (strcmp(propertyName.c_str(), propName->getCString()) == 0) { + foundProperty = true; + break; + } + } + + setProp &= foundProperty; + +// setProp &= extraPropsNames->containsObject(CCString::create(propertyName)); } } else if (isExtraProp && pNode == ccbReader->getAnimationManager()->getRootNode())