issue #1269:mrege latest code and fix conflict

This commit is contained in:
minggo 2012-06-19 13:57:33 +08:00
commit 2666df9472
57 changed files with 1452 additions and 216 deletions

View File

@ -67,12 +67,13 @@ extensions/CCBReader/CCLabelTTFLoader.cpp \
extensions/CCBReader/CCLayerLoader.cpp \
extensions/CCBReader/CCLayerColorLoader.cpp \
extensions/CCBReader/CCLayerGradientLoader.cpp \
extensions/CCBReader/CCMenuLoader.cpp \
extensions/CCBReader/CCMenuItemLoader.cpp \
extensions/CCBReader/CCMenuItemImageLoader.cpp \
extensions/CCBReader/CCSpriteLoader.cpp \
extensions/CCBReader/CCScale9SpriteLoader.cpp \
extensions/CCBReader/CCScrollViewLoader.cpp \
extensions/CCBReader/CCParticleSystemQuadLoader.cpp \
extensions/CCScrollView/CCScrollView.cpp \
kazmath/src/aabb.c \
kazmath/src/mat3.c \
kazmath/src/mat4.c \

View File

@ -357,12 +357,12 @@ void CCNode::setAnchorPoint(const CCPoint& point)
}
/// contentSize getter
const CCSize& CCNode::getContentSize()
CCSize CCNode::getContentSize()
{
return m_tContentSize;
}
void CCNode::setContentSize(const CCSize& size)
void CCNode::setContentSize(CCSize size)
{
if( ! CCSize::CCSizeEqualToSize(size, m_tContentSize) )
{

View File

@ -222,7 +222,7 @@ public:
All nodes has a size. Layer and Scene has the same size of the screen.
@since v0.8
*/
CC_PROPERTY_PASS_BY_REF(CCSize, m_tContentSize, ContentSize)
CC_PROPERTY(CCSize, m_tContentSize, ContentSize)
/** whether or not the node is running */
bool m_bIsRunning;

View File

@ -5,10 +5,6 @@ USING_NS_CC_EXT;
#define PROPERTY_CCBFILE "ccbFile"
CCNode * CCBFileLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCNode::node();
}
void CCBFileLoader::onHandlePropTypeCCBFile(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCNode * pCCBFileNode, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_CCBFILE) == 0) {
pNode->addChild(pCCBFileNode);

View File

@ -10,12 +10,13 @@ class CCBReader;
class CC_DLL CCBFileLoader : public CCNodeLoader {
public:
virtual ~CCBFileLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCBFileLoader, loader);
protected:
virtual CCNode * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCNode);
virtual void onHandlePropTypeCCBFile(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCNode *, CCBReader *);
virtual void onHandlePropTypeCCBFile(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCNode * pCCBFileNode, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -14,7 +14,8 @@ NS_CC_EXT_BEGIN
class CC_DLL CCBMemberVariableAssigner {
public:
virtual ~CCBMemberVariableAssigner() {}
virtual ~CCBMemberVariableAssigner() {};
virtual bool onAssignCCBMemberVariable(CCObject * pTarget, cocos2d::CCString * pMemberVariableName, CCNode * pNode) = 0;
};

View File

@ -185,7 +185,7 @@ bool CCBReader::readBool() {
return this->readByte();
}
int CCBReader::readInt(bool pSign) {
int CCBReader::readInt(bool pSigned) {
int numBits = 0;
while(!this->getBit()) {
numBits++;
@ -200,7 +200,7 @@ int CCBReader::readInt(bool pSign) {
current |= 1 << numBits;
int num;
if(pSign) {
if(pSigned) {
int s = current % 2;
if(s) {
num = (int)(current / 2);

View File

@ -118,11 +118,9 @@ class CC_DLL CCBReader : public CCObject {
std::set<std::string> mLoadedSpriteSheets;
public:
/* Constructor. */
CCBReader(CCNodeLoaderLibrary *, CCBMemberVariableAssigner * = NULL, CCBSelectorResolver * = NULL, CCNodeLoaderListener * = NULL);
CCBReader(CCBReader *);
/* Destructor. */
~CCBReader();
CCBReader(CCNodeLoaderLibrary * pCCNodeLoaderLibrary, CCBMemberVariableAssigner * pCCBMemberVariableAssigner = NULL, CCBSelectorResolver * pCCBSelectorResolver = NULL, CCNodeLoaderListener * pCCNodeLoaderListener = NULL);
CCBReader(CCBReader * pCCBReader);
virtual ~CCBReader();
CCNode * readNodeGraphFromFile(const char * pCCBRootPath, const char * pCCBFileName, CCObject * pOwner = NULL);
CCNode * readNodeGraphFromFile(CCString * pCCBRootPath, CCString * pCCBFileName, CCObject * pOwner = NULL);
@ -135,21 +133,21 @@ class CC_DLL CCBReader : public CCObject {
CCString * getCCBRootPath();
CCObject * getOwner();
CCNode * getRootNode();
CCSize getContainerSize(CCNode *);
CCSize getContainerSize(CCNode * pNode);
float getResolutionScale();
bool isSpriteSheetLoaded(CCString *);
void addLoadedSpriteSheet(CCString *);
bool isSpriteSheetLoaded(CCString * pSpriteSheet);
void addLoadedSpriteSheet(CCString * pSpriteSheet);
/* Utility methods. */
static CCString * lastPathComponent(CCString *);
static CCString * deletePathExtension(CCString *);
static CCString * toLowerCase(CCString *);
static bool endsWith(CCString *, CCString *);
static CCString * concat(CCString *, CCString *);
static CCString * lastPathComponent(CCString * pString);
static CCString * deletePathExtension(CCString * pString);
static CCString * toLowerCase(CCString * pCCString);
static bool endsWith(CCString * pString, CCString * pEnding);
static CCString * concat(CCString * pStringA, CCString * pStringB);
/* Parse methods. */
int readInt(bool pSign);
int readInt(bool pSigned);
unsigned char readByte();
bool readBool();
float readFloat();
@ -160,7 +158,7 @@ class CC_DLL CCBReader : public CCObject {
bool readStringCache();
void readStringCacheEntry();
CCNode * readNodeGraph();
CCNode * readNodeGraph(CCNode *);
CCNode * readNodeGraph(CCNode * pParent);
bool getBit();
void alignBits();

View File

@ -15,7 +15,8 @@ NS_CC_EXT_BEGIN
class CC_DLL CCBSelectorResolver {
public:
virtual ~CCBSelectorResolver() {}
virtual ~CCBSelectorResolver() {};
virtual cocos2d::SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, CCString * pSelectorName) = 0;
virtual cocos2d::extension::SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, CCString * pSelectorName) = 0;
};

View File

@ -22,10 +22,6 @@ USING_NS_CC_EXT;
#define PROPERTY_BACKGROUNDSPRITEFRAME_HIGHLIGHTED "backgroundSpriteFrame|2"
#define PROPERTY_BACKGROUNDSPRITEFRAME_DISABLED "backgroundSpriteFrame|3"
CCControl * CCControlButtonLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCControlButton::node();
}
void CCControlButtonLoader::onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_ZOOMONTOUCHDOWN) == 0) {
((CCControlButton *)pNode)->setZoomOnTouchDown(pCheck);

View File

@ -10,19 +10,20 @@ class CCBReader;
class CC_DLL CCControlButtonLoader : public CCControlLoader {
public:
virtual ~CCControlButtonLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCControlButtonLoader, loader);
protected:
virtual CCControl * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCControlButton);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool, CCBReader *);
virtual void onHandlePropTypeString(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString *, CCBReader *);
virtual void onHandlePropTypeFontTTF(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString *, CCBReader *);
virtual void onHandlePropTypeFloatScale(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float, CCBReader *);
virtual void onHandlePropTypePoint(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCPoint, CCBReader *);
virtual void onHandlePropTypeSize(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSize, CCBReader *);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame *, CCBReader *);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B, CCBReader *);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader);
virtual void onHandlePropTypeString(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString * pString, CCBReader * pCCBReader);
virtual void onHandlePropTypeFontTTF(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString * pFontTTF, CCBReader * pCCBReader);
virtual void onHandlePropTypeFloatScale(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float pFloatScale, CCBReader * pCCBReader);
virtual void onHandlePropTypePoint(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCPoint pPoint, CCBReader * pCCBReader);
virtual void onHandlePropTypeSize(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSize pSize, CCBReader * pCCBReader);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame * pCCSpriteFrame, CCBReader * pCCBReader);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -9,11 +9,14 @@ NS_CC_EXT_BEGIN
class CCBReader;
class CC_DLL CCControlLoader : public CCNodeLoader {
protected:
virtual CCControl * createCCNode(CCNode *, CCBReader *) = 0;
public:
virtual ~CCControlLoader() {};
virtual void onHandlePropTypeBlockCCControl(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, BlockCCControlData *, CCBReader *);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool, CCBReader *);
protected:
CCB_PURE_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCControl);
virtual void onHandlePropTypeBlockCCControl(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, BlockCCControlData * pBlockCCControlData, CCBReader * pCCBReader);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -9,10 +9,6 @@ USING_NS_CC_EXT;
#define PROPERTY_FNTFILE "fntFile"
#define PROPERTY_STRING "string"
CCLabelBMFont * CCLabelBMFontLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCLabelBMFont::node();
}
void CCLabelBMFontLoader::onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_COLOR) == 0) {
((CCLabelBMFont *)pNode)->setColor(pCCColor3B);

View File

@ -10,16 +10,17 @@ class CCBReader;
class CC_DLL CCLabelBMFontLoader : public CCNodeLoader {
public:
virtual ~CCLabelBMFontLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCLabelBMFontLoader, loader);
protected:
virtual CCLabelBMFont * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCLabelBMFont);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B, CCBReader *);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char, CCBReader *);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc, CCBReader *);
virtual void onHandlePropTypeFntFile(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString *, CCBReader *);
virtual void onHandlePropTypeText(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString *, CCBReader *);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char pByte, CCBReader * pCCBReader);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc pCCBlendFunc, CCBReader * pCCBReader);
virtual void onHandlePropTypeFntFile(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString * pFntFile, CCBReader * pCCBReader);
virtual void onHandlePropTypeText(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString * pText, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -13,10 +13,6 @@ USING_NS_CC_EXT;
#define PROPERTY_STRING "string"
#define PROPERTY_DIMENSIONS "dimensions"
CCLabelTTF * CCLabelTTFLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCLabelTTF::node();
}
void CCLabelTTFLoader::onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_COLOR) == 0) {
((CCLabelTTF *)pNode)->setColor(pCCColor3B);

View File

@ -10,19 +10,20 @@ class CCBReader;
class CC_DLL CCLabelTTFLoader : public CCNodeLoader {
public:
virtual ~CCLabelTTFLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCLabelTTFLoader, loader);
protected:
virtual CCLabelTTF * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCLabelTTF);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B, CCBReader *);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char, CCBReader *);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc, CCBReader *);
virtual void onHandlePropTypeFontTTF(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString *, CCBReader *);
virtual void onHandlePropTypeText(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString *, CCBReader *);
virtual void onHandlePropTypeFloatScale(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float, CCBReader *);
virtual void onHandlePropTypeIntegerLabeled(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int, CCBReader *);
virtual void onHandlePropTypeSize(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSize, CCBReader *);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char pByte, CCBReader * pCCBReader);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc pCCBlendFunc, CCBReader * pCCBReader);
virtual void onHandlePropTypeFontTTF(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString * pFontTTF, CCBReader * pCCBReader);
virtual void onHandlePropTypeText(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCString * pText, CCBReader * pCCBReader);
virtual void onHandlePropTypeFloatScale(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float pFloatScale, CCBReader * pCCBReader);
virtual void onHandlePropTypeIntegerLabeled(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int pIntegerLabeled, CCBReader * pCCBReader);
virtual void onHandlePropTypeSize(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSize pSize, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -7,10 +7,6 @@ USING_NS_CC_EXT;
#define PROPERTY_OPACITY "opacity"
#define PROPERTY_BLENDFUNC "blendFunc"
CCLayerColor * CCLayerColorLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCLayerColor::node();
}
void CCLayerColorLoader::onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_COLOR) == 0) {
((CCLayerColor *)pNode)->setColor(pCCColor3B);

View File

@ -10,13 +10,15 @@ class CCBReader;
class CC_DLL CCLayerColorLoader : public CCLayerLoader {
public:
virtual ~CCLayerColorLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCLayerColorLoader, loader);
protected:
virtual CCLayerColor * createCCNode(CCNode *, CCBReader *);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B, CCBReader *);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char, CCBReader *);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc, CCBReader *);
protected:
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCLayerColor);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char pByte, CCBReader * pCCBReader);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc pCCBlendFunc, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -10,10 +10,6 @@ USING_NS_CC_EXT;
#define PROPERTY_VECTOR "vector"
#define PROPERTY_BLENDFUNC "blendFunc"
CCLayerGradient * CCLayerGradientLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCLayerGradient::node();
}
void CCLayerGradientLoader::onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_STARTCOLOR) == 0) {
((CCLayerGradient *)pNode)->setStartColor(pCCColor3B);

View File

@ -10,15 +10,16 @@ class CCBReader;
class CC_DLL CCLayerGradientLoader : public CCLayerLoader {
public:
virtual ~CCLayerGradientLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCLayerGradientLoader, loader);
protected:
virtual CCLayerGradient * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCLayerGradient);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B, CCBReader *);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char, CCBReader *);
virtual void onHandlePropTypePoint(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCPoint, CCBReader *);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc, CCBReader *);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char pByte, CCBReader * pCCBReader);
virtual void onHandlePropTypePoint(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCPoint pPoint, CCBReader * pCCBReader);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc pCCBlendFunc, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -8,10 +8,6 @@ USING_NS_CC_EXT;
#define PROPERTY_MOUSE_ENABLED "isMouseEnabled"
#define PROPERTY_KEYBOARD_ENABLED "isKeyboardEnabled"
CCLayer * CCLayerLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCLayer::node();
}
void CCLayerLoader::onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_TOUCH_ENABLED) == 0) {
((CCLayer *)pNode)->setTouchEnabled(pCheck);

View File

@ -10,10 +10,11 @@ class CCBReader;
class CC_DLL CCLayerLoader : public CCNodeLoader {
public:
virtual ~CCLayerLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCLayerLoader, loader);
protected:
virtual CCLayer * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCLayer);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader);
};

View File

@ -7,10 +7,6 @@ USING_NS_CC_EXT;
#define PROPERTY_SELECTEDDISPLAYFRAME "selectedSpriteFrame"
#define PROPERTY_DISABLEDDISPLAYFRAME "disabledSpriteFrame"
CCMenuItemImage * CCMenuItemImageLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCMenuItemImage::node();
}
void CCMenuItemImageLoader::onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame * pCCSpriteFrame, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_NORMALDISPLAYFRAME) == 0) {
if(pCCSpriteFrame != NULL) {

View File

@ -10,12 +10,13 @@ class CCBReader;
class CC_DLL CCMenuItemImageLoader : public CCMenuItemLoader {
public:
virtual ~CCMenuItemImageLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCMenuItemImageLoader, loader);
protected:
virtual CCMenuItemImage * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCMenuItemImage);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame *, CCBReader *);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame * pCCSpriteFrame, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -9,11 +9,14 @@ NS_CC_EXT_BEGIN
class CCBReader;
class CC_DLL CCMenuItemLoader : public CCNodeLoader {
protected:
virtual CCMenuItem * createCCNode(CCNode *, CCBReader *) = 0;
public:
virtual ~CCMenuItemLoader() {};
virtual void onHandlePropTypeBlock(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, BlockData *, CCBReader *);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool, CCBReader *);
protected:
CCB_PURE_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCMenuItem);
virtual void onHandlePropTypeBlock(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, BlockData * pBlockData, CCBReader * pCCBReader);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -1,9 +0,0 @@
#include "CCMenuLoader.h"
USING_NS_CC;
USING_NS_CC_EXT;
CCMenu * CCMenuLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCMenu::node();
}

View File

@ -10,10 +10,11 @@ class CCBReader;
class CC_DLL CCMenuLoader : public CCLayerLoader {
public:
virtual ~CCMenuLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCMenuLoader, loader);
protected:
virtual CCMenu * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCMenu);
};
NS_CC_EXT_END

View File

@ -25,10 +25,6 @@ CCNode * CCNodeLoader::loadCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return ccNode;
}
CCNode * CCNodeLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCNode::node();
}
void CCNodeLoader::parseProperties(CCNode * pNode, CCNode * pParent, CCBReader * pCCBReader) {
int propertyCount = pCCBReader->readInt(false);
for(int i = 0; i < propertyCount; i++) {
@ -86,7 +82,7 @@ void CCNodeLoader::parseProperties(CCNode * pNode, CCNode * pParent, CCBReader *
if(setProp) {
this->onHandlePropTypeScaleLock(pNode, pParent, propertyName, scaleLock, pCCBReader);
}
delete[] scaleLock;
CC_SAFE_DELETE_ARRAY(scaleLock);
break;
}
case kCCBPropTypeFloat: {
@ -129,7 +125,7 @@ void CCNodeLoader::parseProperties(CCNode * pNode, CCNode * pParent, CCBReader *
if(setProp) {
this->onHandlePropTypeFloatVar(pNode, pParent, propertyName, floatVar, pCCBReader);
}
delete[] floatVar;
CC_SAFE_DELETE_ARRAY(floatVar);
break;
}
case kCCBPropTypeCheck: {
@ -179,7 +175,7 @@ void CCNodeLoader::parseProperties(CCNode * pNode, CCNode * pParent, CCBReader *
if(setProp) {
this->onHandlePropTypeColor4FVar(pNode, pParent, propertyName, color4FVar, pCCBReader);
}
delete[] color4FVar;
CC_SAFE_DELETE_ARRAY(color4FVar);
break;
}
case kCCBPropTypeFlip: {
@ -187,7 +183,7 @@ void CCNodeLoader::parseProperties(CCNode * pNode, CCNode * pParent, CCBReader *
if(setProp) {
this->onHandlePropTypeFlip(pNode, pParent, propertyName, flip, pCCBReader);
}
delete[] flip;
CC_SAFE_DELETE_ARRAY(flip);
break;
}
case kCCBPropTypeBlendFunc: {
@ -230,7 +226,7 @@ void CCNodeLoader::parseProperties(CCNode * pNode, CCNode * pParent, CCBReader *
if(setProp) {
this->onHandlePropTypeBlock(pNode, pParent, propertyName, blockData, pCCBReader);
}
delete blockData;
CC_SAFE_DELETE(blockData);
break;
}
case kCCBPropTypeBlockCCControl: {
@ -238,7 +234,7 @@ void CCNodeLoader::parseProperties(CCNode * pNode, CCNode * pParent, CCBReader *
if(setProp && blockCCControlData != NULL) {
this->onHandlePropTypeBlockCCControl(pNode, pParent, propertyName, blockCCControlData, pCCBReader);
}
delete blockCCControlData;
CC_SAFE_DELETE(blockCCControlData);
break;
}
case kCCBPropTypeCCBFile: {

View File

@ -7,9 +7,11 @@
NS_CC_EXT_BEGIN
#define CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(T) virtual T * createCCNode(cocos2d::CCNode * pParent, cocos2d::extension::CCBReader * pCCBReader) { \
return T::node(); \
return T::node(); \
}
#define CCB_PURE_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(T) virtual T * createCCNode(cocos2d::CCNode * pParent, cocos2d::extension::CCBReader * pCCBReader) = 0
struct BlockData {
SEL_MenuHandler mSELMenuHandler;
CCObject * mTarget;
@ -26,13 +28,14 @@ class CCBReader;
class CC_DLL CCNodeLoader : public CCObject {
public:
virtual ~CCNodeLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCNodeLoader, loader);
virtual CCNode * loadCCNode(CCNode *, CCBReader * pCCBReader);
virtual void parseProperties(CCNode * pNode, CCNode * pParent, CCBReader * pCCBReader);
protected:
virtual CCNode * createCCNode(CCNode * pParent, CCBReader * pCCBReader);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCNode);
virtual CCPoint parsePropTypePosition(CCNode * pNode, CCNode * pParent, CCBReader * pCCBReader);
virtual CCPoint parsePropTypePoint(CCNode * pNode, CCNode * pParent, CCBReader * pCCBReader);

View File

@ -13,6 +13,7 @@
#include "CCMenuItemImageLoader.h"
#include "CCControlButtonLoader.h"
#include "CCParticleSystemQuadLoader.h"
#include "CCScrollViewLoader.h"
USING_NS_CC;
USING_NS_CC_EXT;
@ -34,6 +35,7 @@ void CCNodeLoaderLibrary::registerDefaultCCNodeLoaders() {
this->registerCCNodeLoader("CCLabelBMFont", CCLabelBMFontLoader::loader());
this->registerCCNodeLoader("CCLabelTTF", CCLabelTTFLoader::loader());
this->registerCCNodeLoader("CCScale9Sprite", CCScale9SpriteLoader::loader());
this->registerCCNodeLoader("CCScrollView", CCScrollViewLoader::loader());
this->registerCCNodeLoader("CCBFile", CCBFileLoader::loader());
this->registerCCNodeLoader("CCMenu", CCMenuLoader::loader());
this->registerCCNodeLoader("CCMenuItemImage", CCMenuItemImageLoader::loader());

View File

@ -17,7 +17,7 @@ class CC_DLL CCNodeLoaderLibrary : public CCObject {
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCNodeLoaderLibrary, library);
CCNodeLoaderLibrary();
~CCNodeLoaderLibrary();
virtual ~CCNodeLoaderLibrary();
void registerDefaultCCNodeLoaders();
void registerCCNodeLoader(const char * pClassName, CCNodeLoader * pCCNodeLoader);

View File

@ -7,7 +7,8 @@ NS_CC_EXT_BEGIN
class CC_DLL CCNodeLoaderListener {
public:
virtual ~CCNodeLoaderListener() {}
virtual ~CCNodeLoaderListener() {};
virtual void onNodeLoaded(CCNode * pNode, CCNodeLoader * pNodeLoader) = 0;
};

View File

@ -26,10 +26,6 @@ USING_NS_CC_EXT;
#define PROPERTY_ENDRADIUS "endRadius"
#define PROPERTY_ROTATEPERSECOND "rotatePerSecond"
CCParticleSystemQuad * CCParticleSystemQuadLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCParticleSystemQuad::node();
}
void CCParticleSystemQuadLoader::onHandlePropTypeIntegerLabeled(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int pIntegerLabeled, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_EMITERMODE) == 0) {
((CCParticleSystemQuad *)pNode)->setEmitterMode(pIntegerLabeled);

View File

@ -10,19 +10,20 @@ class CCBReader;
class CC_DLL CCParticleSystemQuadLoader : public CCNodeLoader {
public:
virtual ~CCParticleSystemQuadLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCParticleSystemQuadLoader, loader);
protected:
virtual CCParticleSystemQuad * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCParticleSystemQuad);
virtual void onHandlePropTypeIntegerLabeled(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int, CCBReader *);
virtual void onHandlePropTypePoint(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCPoint, CCBReader *);
virtual void onHandlePropTypeFloat(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float, CCBReader *);
virtual void onHandlePropTypeInteger(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int, CCBReader *);
virtual void onHandlePropTypeFloatVar(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float *, CCBReader *);
virtual void onHandlePropTypeColor4FVar(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor4F *, CCBReader *);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc, CCBReader *);
virtual void onHandlePropTypeTexture(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCTexture2D *, CCBReader *);
virtual void onHandlePropTypeIntegerLabeled(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int pIntegerLabeled, CCBReader * pCCBReader);
virtual void onHandlePropTypePoint(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCPoint pPoint, CCBReader * pCCBReader);
virtual void onHandlePropTypeFloat(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float pFloat, CCBReader * pCCBReader);
virtual void onHandlePropTypeInteger(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int pInteger, CCBReader * pCCBReader);
virtual void onHandlePropTypeFloatVar(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float * pFloatVar, CCBReader * pCCBReader);
virtual void onHandlePropTypeColor4FVar(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor4F * pCCColor4FVar, CCBReader * pCCBReader);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc pCCBlendFunc, CCBReader * pCCBReader);
virtual void onHandlePropTypeTexture(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCTexture2D * pCCTexture2D, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -14,10 +14,6 @@ USING_NS_CC_EXT;
#define PROPERTY_INSETRIGHT "insetRight"
#define PROPERTY_INSETBOTTOM "insetBottom"
CCScale9Sprite * CCScale9SpriteLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCScale9Sprite::node();
}
void CCScale9SpriteLoader::onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame * pCCSpriteFrame, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_SPRITEFRAME) == 0) {
((CCScale9Sprite *)pNode)->initWithSpriteFrame(pCCSpriteFrame);

View File

@ -10,17 +10,18 @@ class CCBReader;
class CC_DLL CCScale9SpriteLoader : public CCNodeLoader {
public:
virtual ~CCScale9SpriteLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCScale9SpriteLoader, loader);
protected:
virtual CCScale9Sprite * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCScale9Sprite);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B, CCBReader *);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char, CCBReader *);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc, CCBReader *);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame *, CCBReader *);
virtual void onHandlePropTypeSize(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSize, CCBReader *);
virtual void onHandlePropTypeFloat(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float, CCBReader *);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char pByte, CCBReader * pCCBReader);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc pCCBlendFunc, CCBReader * pCCBReader);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame * pCCSpriteFrame, CCBReader * pCCBReader);
virtual void onHandlePropTypeSize(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSize pSize, CCBReader * pCCBReader);
virtual void onHandlePropTypeFloat(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float pFloat, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -0,0 +1,44 @@
#include "CCScrollViewLoader.h"
USING_NS_CC;
USING_NS_CC_EXT;
#define PROPERTY_CONTAINER "container"
#define PROPERTY_DIRECTION "direction"
#define PROPERTY_CLIPSTOBOUNDS "clipsToBounds"
#define PROPERTY_BOUNCES "bounces"
#define PROPERTY_SCALE "scale"
void CCScrollViewLoader::onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_CLIPSTOBOUNDS) == 0) {
((CCScrollView *)pNode)->setClippingToBounds(pCheck);
} else if(pPropertyName->compare(PROPERTY_BOUNCES) == 0) {
((CCScrollView *)pNode)->setBounceable(pCheck);
} else {
CCNodeLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pCheck, pCCBReader);
}
}
void CCScrollViewLoader::onHandlePropTypeCCBFile(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCNode * pCCBFileNode, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_CONTAINER) == 0) {
((CCScrollView *)pNode)->setContainer(pCCBFileNode);
} else {
CCNodeLoader::onHandlePropTypeCCBFile(pNode, pParent, pPropertyName, pCCBFileNode, pCCBReader);
}
}
void CCScrollViewLoader::onHandlePropTypeFloat(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float pFloat, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_SCALE) == 0) {
((CCScrollView *)pNode)->setScale(pFloat);
} else {
CCNodeLoader::onHandlePropTypeFloat(pNode, pParent, pPropertyName, pFloat, pCCBReader);
}
}
void CCScrollViewLoader::onHandlePropTypeIntegerLabeled(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int pIntegerLabeled, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_DIRECTION) == 0) {
((CCScrollView *)pNode)->setDirection(CCScrollViewDirection(pIntegerLabeled));
} else {
CCNodeLoader::onHandlePropTypeFloatScale(pNode, pParent, pPropertyName, pIntegerLabeled, pCCBReader);
}
}

View File

@ -0,0 +1,27 @@
#ifndef _CCB_CCSCROLLVIEWLOADER_H_
#define _CCB_CCSCROLLVIEWLOADER_H_
#include "CCNodeLoader.h"
NS_CC_EXT_BEGIN
/* Forward declaration. */
class CCBReader;
class CC_DLL CCScrollViewLoader : public CCNodeLoader {
public:
virtual ~CCScrollViewLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCScrollViewLoader, loader);
protected:
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCScrollView);
virtual void onHandlePropTypeCCBFile(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCNode * pCCBFileNode, CCBReader * pCCBReader);
virtual void onHandlePropTypeCheck(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool pCheck, CCBReader * pCCBReader);
virtual void onHandlePropTypeFloat(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, float pFloat, CCBReader * pCCBReader);
virtual void onHandlePropTypeIntegerLabeled(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, int pIntegerLabeled, CCBReader * pCCBReader);
};
NS_CC_EXT_END
#endif

View File

@ -9,10 +9,6 @@ USING_NS_CC_EXT;
#define PROPERTY_OPACITY "opacity"
#define PROPERTY_BLENDFUNC "blendFunc"
CCSprite * CCSpriteLoader::createCCNode(CCNode * pParent, CCBReader * pCCBReader) {
return CCSprite::node();
}
void CCSpriteLoader::onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame * pCCSpriteFrame, CCBReader * pCCBReader) {
if(pPropertyName->compare(PROPERTY_DISPLAYFRAME) == 0) {
((CCSprite *)pNode)->setDisplayFrame(pCCSpriteFrame);

View File

@ -10,16 +10,17 @@ class CCBReader;
class CC_DLL CCSpriteLoader : public CCNodeLoader {
public:
virtual ~CCSpriteLoader() {};
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(CCSpriteLoader, loader);
protected:
virtual CCSprite * createCCNode(CCNode *, CCBReader *);
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(CCSprite);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B, CCBReader *);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char, CCBReader *);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc, CCBReader *);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame *, CCBReader *);
virtual void onHandlePropTypeFlip(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool *, CCBReader *);
virtual void onHandlePropTypeColor3(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccColor3B pCCColor3B, CCBReader * pCCBReader);
virtual void onHandlePropTypeByte(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, unsigned char pByte, CCBReader * pCCBReader);
virtual void onHandlePropTypeBlendFunc(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, ccBlendFunc pCCBBlendFunc, CCBReader * pCCBReader);
virtual void onHandlePropTypeSpriteFrame(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, CCSpriteFrame * pCCSpriteFrame, CCBReader * pCCBReader);
virtual void onHandlePropTypeFlip(CCNode * pNode, CCNode * pParent, CCString * pPropertyName, bool * pFlip, CCBReader * pCCBReader);
};
NS_CC_EXT_END

View File

@ -0,0 +1,722 @@
//
// SWScrollView.m
// SWGameLib
//
// Copyright (c) 2010-2012 cocos2d-x.org
// Copyright (c) 2010 Sangwoo Im
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN false EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
// Created by Sangwoo Im on 6/3/10.
// Copyright 2010 Sangwoo Im. All rights reserved.
//
#include "CCScrollView.h"
#include "CCActionInterval.h"
#include "CCActionTween.h"
#include "CCActionInstant.h"
#include "CCPointExtension.h"
#include "CCTouchDispatcher.h"
#include "CCGrid.h"
#include "CCDirector.h"
#include "kazmath/GL/matrix.h"
#include "CCTouch.h"
NS_CC_EXT_BEGIN
#define SCROLL_DEACCEL_RATE 0.95f
#define SCROLL_DEACCEL_DIST 1.0f
#define BOUNCE_DURATION 0.15f
#define INSET_RATIO 0.2f
CCScrollView::CCScrollView()
: m_fZoomScale(0.0f)
, m_fMinZoomScale(0.0f)
, m_fMaxZoomScale(0.0f)
, m_pDelegate(NULL)
, m_bDragging(false)
, m_bBounceable(false)
, m_eDirection(CCScrollViewDirectionBoth)
, m_bClippingToBounds(false)
, m_pContainer(NULL)
, m_bTouchMoved(false)
, m_fTouchLength(0.0f)
, m_pTouches(NULL)
, m_fMinScale(0.0f)
, m_fMaxScale(0.0f)
{
}
CCScrollView::~CCScrollView()
{
m_pTouches->release();
}
CCScrollView* CCScrollView::viewWithViewSize(CCSize size, CCNode* container/* = NULL*/)
{
return CCScrollView::create(size, container);
}
CCScrollView* CCScrollView::create(CCSize size, CCNode* container/* = NULL*/)
{
CCScrollView* pRet = new CCScrollView();
if (pRet && pRet->initWithViewSize(size, container))
{
pRet->autorelease();
}
else
{
CC_SAFE_DELETE(pRet);
}
return pRet;
}
CCScrollView* CCScrollView::node()
{
return CCScrollView::create();
}
CCScrollView* CCScrollView::create()
{
CCScrollView* pRet = new CCScrollView();
if (pRet && pRet->init())
{
pRet->autorelease();
}
else
{
CC_SAFE_DELETE(pRet);
}
return pRet;
}
bool CCScrollView::initWithViewSize(CCSize size, CCNode *container/* = NULL*/)
{
if (CCLayer::init())
{
m_pContainer = container;
if (!this->m_pContainer)
{
m_pContainer = CCLayer::node();
}
this->setViewSize(size);
setTouchEnabled(true);
m_pTouches = new CCArray();
m_pDelegate = NULL;
m_bBounceable = true;
m_bClippingToBounds = true;
//m_pContainer->setContentSize(CCSizeZero);
m_eDirection = CCScrollViewDirectionBoth;
m_pContainer->setPosition(ccp(0.0f, 0.0f));
m_fTouchLength = 0.0f;
this->addChild(m_pContainer);
m_fMinScale = m_fMaxScale = 1.0f;
return true;
}
return false;
}
bool CCScrollView::init()
{
return this->initWithViewSize(CCSizeMake(200, 200), NULL);
}
void CCScrollView::registerWithTouchDispatcher()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
}
bool CCScrollView::isNodeVisible(CCNode* node)
{
const CCPoint offset = this->getContentOffset();
const CCSize size = this->getViewSize();
const float scale = this->getZoomScale();
CCRect viewRect;
viewRect = CCRectMake(-offset.x/scale, -offset.y/scale, size.width/scale, size.height/scale);
return CCRect::CCRectIntersectsRect(viewRect, node->boundingBox());
}
void CCScrollView::pause(CCObject* sender)
{
m_pContainer->pauseSchedulerAndActions();
CCObject* pObj = NULL;
CCArray* pChildren = m_pContainer->getChildren();
CCARRAY_FOREACH(pChildren, pObj)
{
CCNode* pChild = (CCNode*)pObj;
pChild->pauseSchedulerAndActions();
}
}
void CCScrollView::resume(CCObject* sender)
{
CCObject* pObj = NULL;
CCArray* pChildren = m_pContainer->getChildren();
CCARRAY_FOREACH(pChildren, pObj)
{
CCNode* pChild = (CCNode*)pObj;
pChild->resumeSchedulerAndActions();
}
m_pContainer->resumeSchedulerAndActions();
}
void CCScrollView::setTouchEnabled(bool e)
{
CCLayer::setTouchEnabled(e);
if (!e)
{
m_bDragging = false;
m_bTouchMoved = false;
m_pTouches->removeAllObjects();
}
}
void CCScrollView::setContentOffset(CCPoint offset, bool animated/* = false*/)
{
if (animated)
{ //animate scrolling
this->setContentOffsetInDuration(offset, BOUNCE_DURATION);
}
else
{ //set the container position directly
if (!m_bBounceable)
{
const CCPoint minOffset = this->minContainerOffset();
const CCPoint maxOffset = this->maxContainerOffset();
offset.x = MAX(minOffset.x, MIN(maxOffset.x, offset.x));
offset.y = MAX(minOffset.y, MIN(maxOffset.y, offset.y));
}
m_pContainer->setPosition(offset);
if (m_pDelegate != NULL)
{
m_pDelegate->scrollViewDidScroll(this);
}
}
}
void CCScrollView::setContentOffsetInDuration(CCPoint offset, float dt)
{
CCFiniteTimeAction *scroll, *expire;
scroll = CCMoveTo::actionWithDuration(dt, offset);
expire = CCCallFuncN::actionWithTarget(this, callfuncN_selector(CCScrollView::stoppedAnimatedScroll));
m_pContainer->runAction(CCSequence::actions(scroll, expire, NULL));
this->schedule(schedule_selector(CCScrollView::performedAnimatedScroll));
}
CCPoint CCScrollView::getContentOffset()
{
return m_pContainer->getPosition();
}
void CCScrollView::setZoomScale(float s)
{
if (m_pContainer->getScale() != s)
{
CCPoint oldCenter, newCenter;
CCPoint center;
if (m_fTouchLength == 0.0f)
{
center = ccp(m_tViewSize.width*0.5f, m_tViewSize.height*0.5f);
center = this->convertToWorldSpace(center);
}
else
{
center = m_tTouchPoint;
}
oldCenter = m_pContainer->convertToNodeSpace(center);
m_pContainer->setScale(MAX(m_fMinScale, MIN(m_fMaxScale, s)));
newCenter = m_pContainer->convertToWorldSpace(oldCenter);
const CCPoint offset = ccpSub(center, newCenter);
if (m_pDelegate != NULL)
{
m_pDelegate->scrollViewDidZoom(this);
}
this->setContentOffset(ccpAdd(m_pContainer->getPosition(),offset));
}
}
CCFloat CCScrollView::getZoomScale()
{
return m_pContainer->getScale();
}
void CCScrollView::setZoomScale(float s, bool animated)
{
if (animated)
{
this->setZoomScaleInDuration(s, BOUNCE_DURATION);
}
else
{
this->setZoomScale(s);
}
}
void CCScrollView::setZoomScaleInDuration(float s, float dt)
{
if (dt > 0)
{
if (m_pContainer->getScale() != s)
{
CCActionTween *scaleAction;
scaleAction = CCActionTween::actionWithDuration(dt, "zoomScale", m_pContainer->getScale(), s);
this->runAction(scaleAction);
}
}
else
{
this->setZoomScale(s);
}
}
void CCScrollView::setViewSize(CCSize size)
{
m_tViewSize = size;
if (this->m_pContainer != NULL)
{
m_fMaxInset = this->maxContainerOffset();
m_fMaxInset = ccp(m_fMaxInset.x + m_tViewSize.width * INSET_RATIO,
m_fMaxInset.y + m_tViewSize.height * INSET_RATIO);
m_fMinInset = this->minContainerOffset();
m_fMinInset = ccp(m_fMinInset.x - m_tViewSize.width * INSET_RATIO,
m_fMinInset.y - m_tViewSize.height * INSET_RATIO);
}
CCLayer::setContentSize(size);
}
CCNode * CCScrollView::getContainer()
{
return this->m_pContainer;
}
void CCScrollView::setContainer(CCNode * pContainer)
{
this->removeAllChildrenWithCleanup(true);
if (!pContainer) return;
this->m_pContainer = pContainer;
this->m_pContainer->ignoreAnchorPointForPosition(false);
this->m_pContainer->setAnchorPoint(ccp(0.0f, 0.0f));
this->addChild(this->m_pContainer);
this->setViewSize(this->m_tViewSize);
}
void CCScrollView::relocateContainer(bool animated)
{
CCPoint oldPoint, min, max;
CCFloat newX, newY;
min = this->minContainerOffset();
max = this->maxContainerOffset();
oldPoint = m_pContainer->getPosition();
newX = oldPoint.x;
newY = oldPoint.y;
if (m_eDirection == CCScrollViewDirectionBoth || m_eDirection == CCScrollViewDirectionHorizontal)
{
newX = MIN(newX, max.x);
newX = MAX(newX, min.x);
}
if (m_eDirection == CCScrollViewDirectionBoth || m_eDirection == CCScrollViewDirectionVertical)
{
newY = MIN(newY, max.y);
newY = MAX(newY, min.y);
}
if (newY != oldPoint.y || newX != oldPoint.x)
{
this->setContentOffset(ccp(newX, newY), animated);
}
}
CCPoint CCScrollView::maxContainerOffset()
{
return ccp(0.0f, 0.0f);
}
CCPoint CCScrollView::minContainerOffset()
{
return ccp(m_tViewSize.width - m_pContainer->getContentSize().width*m_pContainer->getScaleX(),
m_tViewSize.height - m_pContainer->getContentSize().height*m_pContainer->getScaleY());
}
void CCScrollView::deaccelerateScrolling(float dt)
{
if (m_bDragging)
{
this->unschedule(schedule_selector(CCScrollView::deaccelerateScrolling));
return;
}
CCFloat newX, newY;
CCPoint maxInset, minInset;
m_pContainer->setPosition(ccpAdd(m_pContainer->getPosition(), m_tScrollDistance));
if (m_bBounceable)
{
maxInset = m_fMaxInset;
minInset = m_fMinInset;
}
else
{
maxInset = this->maxContainerOffset();
minInset = this->minContainerOffset();
}
//check to see if offset lies within the inset bounds
newX = MIN(m_pContainer->getPosition().x, maxInset.x);
newX = MAX(newX, minInset.x);
newY = MIN(m_pContainer->getPosition().y, maxInset.y);
newY = MAX(newY, minInset.y);
m_tScrollDistance = ccpSub(m_tScrollDistance, ccp(newX - m_pContainer->getPosition().x, newY - m_pContainer->getPosition().y));
m_tScrollDistance = ccpMult(m_tScrollDistance, SCROLL_DEACCEL_RATE);
this->setContentOffset(ccp(newX,newY));
if ((fabsf(m_tScrollDistance.x) <= SCROLL_DEACCEL_DIST &&
fabsf(m_tScrollDistance.y) <= SCROLL_DEACCEL_DIST) ||
newX == maxInset.x || newX == minInset.x ||
newY == maxInset.y || newY == minInset.y)
{
this->unschedule(schedule_selector(CCScrollView::deaccelerateScrolling));
this->relocateContainer(true);
}
}
void CCScrollView::stoppedAnimatedScroll(CCNode * node)
{
this->unschedule(schedule_selector(CCScrollView::performedAnimatedScroll));
}
void CCScrollView::performedAnimatedScroll(float dt)
{
if (m_bDragging)
{
this->unschedule(schedule_selector(CCScrollView::performedAnimatedScroll));
return;
}
if (m_pDelegate != NULL)
{
m_pDelegate->scrollViewDidScroll(this);
}
}
CCSize CCScrollView::getContentSize()
{
return CCSizeMake(m_pContainer->getContentSize().width, m_pContainer->getContentSize().height);
}
void CCScrollView::setContentSize(CCSize size)
{
this->setViewSize(size);
}
/**
* make sure all children go to the container
*/
void CCScrollView::addChild(CCNode * child, int zOrder, int tag)
{
child->ignoreAnchorPointForPosition(false);
child->setAnchorPoint(ccp(0.0f, 0.0f));
if (m_pContainer != child) {
m_pContainer->addChild(child, zOrder, tag);
} else {
CCLayer::addChild(child, zOrder, tag);
}
}
void CCScrollView::addChild(CCNode * child, int zOrder)
{
this->addChild(child, zOrder, child->getTag());
}
void CCScrollView::addChild(CCNode * child)
{
this->addChild(child, child->getZOrder(), child->getTag());
}
/**
* clip this view so that outside of the visible bounds can be hidden.
*/
void CCScrollView::beforeDraw()
{
if (m_bClippingToBounds)
{
// TODO: This scrollview should respect parents' positions
CCPoint screenPos = this->convertToWorldSpace(this->getParent()->getPosition());
glEnable(GL_SCISSOR_TEST);
float s = this->getScale();
CCDirector *director = CCDirector::sharedDirector();
s *= director->getContentScaleFactor();
glScissor((GLint)screenPos.x, (GLint)screenPos.y, (GLsizei)(m_tViewSize.width*s), (GLsizei)(m_tViewSize.height*s));
}
}
/**
* retract what's done in beforeDraw so that there's no side effect to
* other nodes.
*/
void CCScrollView::afterDraw()
{
if (m_bClippingToBounds)
{
glDisable(GL_SCISSOR_TEST);
}
}
void CCScrollView::visit()
{
// quick return if not visible
if (!isVisible())
{
return;
}
kmGLPushMatrix();
// glPushMatrix();
if (m_pGrid && m_pGrid->isActive())
{
m_pGrid->beforeDraw();
this->transformAncestors();
}
this->transform();
this->beforeDraw();
if(m_pChildren)
{
ccArray *arrayData = m_pChildren->data;
unsigned int i=0;
// draw children zOrder < 0
for( ; i < arrayData->num; i++ )
{
CCNode *child = (CCNode*)arrayData->arr[i];
if ( child->getZOrder() < 0 )
{
child->visit();
}
else
{
break;
}
}
// this draw
this->draw();
// draw children zOrder >= 0
for( ; i < arrayData->num; i++ )
{
CCNode* child = (CCNode*)arrayData->arr[i];
child->visit();
}
}
else
{
this->draw();
}
this->afterDraw();
if ( m_pGrid && m_pGrid->isActive())
{
m_pGrid->afterDraw(this);
}
kmGLPopMatrix();
// glPopMatrix();
}
bool CCScrollView::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
if (!this->isVisible())
{
return false;
}
CCRect frame;
frame = CCRectMake(this->getPosition().x, this->getPosition().y, m_tViewSize.width, m_tViewSize.height);
//dispatcher does not know about clipping. reject touches outside visible bounds.
if (m_pTouches->count() > 2 ||
m_bTouchMoved ||
!CCRect::CCRectContainsPoint(frame, m_pContainer->convertToWorldSpace(m_pContainer->convertTouchToNodeSpace(touch))))
{
return false;
}
if (!m_pTouches->containsObject(touch))
{
m_pTouches->addObject(touch);
}
if (m_pTouches->count() == 1)
{ // scrolling
m_tTouchPoint = this->convertTouchToNodeSpace(touch);
m_bTouchMoved = false;
m_bDragging = true; //dragging started
m_tScrollDistance = ccp(0.0f, 0.0f);
m_fTouchLength = 0.0f;
}
else if (m_pTouches->count() == 2)
{
m_tTouchPoint = ccpMidpoint(this->convertTouchToNodeSpace((CCTouch*)m_pTouches->objectAtIndex(0)),
this->convertTouchToNodeSpace((CCTouch*)m_pTouches->objectAtIndex(1)));
m_fTouchLength = ccpDistance(m_pContainer->convertTouchToNodeSpace((CCTouch*)m_pTouches->objectAtIndex(0)),
m_pContainer->convertTouchToNodeSpace((CCTouch*)m_pTouches->objectAtIndex(1)));
m_bDragging = false;
}
return true;
}
void CCScrollView::ccTouchMoved(CCTouch* touch, CCEvent* event)
{
if (!this->isVisible())
{
return;
}
if (m_pTouches->containsObject(touch))
{
if (m_pTouches->count() == 1 && m_bDragging)
{ // scrolling
CCPoint moveDistance, newPoint, maxInset, minInset;
CCRect frame;
CCFloat newX, newY;
m_bTouchMoved = true;
frame = CCRectMake(this->getPosition().x, this->getPosition().y, m_tViewSize.width, m_tViewSize.height);
newPoint = this->convertTouchToNodeSpace((CCTouch*)m_pTouches->objectAtIndex(0));
moveDistance = ccpSub(newPoint, m_tTouchPoint);
m_tTouchPoint = newPoint;
if (CCRect::CCRectContainsPoint(frame, this->convertToWorldSpace(newPoint)))
{
switch (m_eDirection)
{
case CCScrollViewDirectionVertical:
moveDistance = ccp(0.0f, moveDistance.y);
break;
case CCScrollViewDirectionHorizontal:
moveDistance = ccp(moveDistance.x, 0.0f);
break;
default:
break;
}
m_pContainer->setPosition(ccpAdd(m_pContainer->getPosition(), moveDistance));
maxInset = m_fMaxInset;
minInset = m_fMinInset;
//check to see if offset lies within the inset bounds
newX = MIN(m_pContainer->getPosition().x, maxInset.x);
newX = MAX(newX, minInset.x);
newY = MIN(m_pContainer->getPosition().y, maxInset.y);
newY = MAX(newY, minInset.y);
m_tScrollDistance = ccpSub(moveDistance, ccp(newX - m_pContainer->getPosition().x, newY - m_pContainer->getPosition().y));
this->setContentOffset(ccp(newX, newY));
}
}
else if (m_pTouches->count() == 2 && !m_bDragging)
{
const CCFloat len = ccpDistance(m_pContainer->convertTouchToNodeSpace((CCTouch*)m_pTouches->objectAtIndex(0)),
m_pContainer->convertTouchToNodeSpace((CCTouch*)m_pTouches->objectAtIndex(1)));
this->setZoomScale(this->getZoomScale()*len/m_fTouchLength);
}
}
}
void CCScrollView::ccTouchEnded(CCTouch* touch, CCEvent* event)
{
if (!this->isVisible())
{
return;
}
if (m_pTouches->containsObject(touch))
{
if (m_pTouches->count() == 1 && m_bTouchMoved)
{
this->schedule(schedule_selector(CCScrollView::deaccelerateScrolling));
}
m_pTouches->removeObject(touch);
}
if (m_pTouches->count() == 0)
{
m_bDragging = false;
m_bTouchMoved = false;
}
}
void CCScrollView::ccTouchCancelled(CCTouch* touch, CCEvent* event)
{
if (!this->isVisible())
{
return;
}
m_pTouches->removeObject(touch);
if (m_pTouches->count() == 0)
{
m_bDragging = false;
m_bTouchMoved = false;
}
}
NS_CC_EXT_END

View File

@ -0,0 +1,343 @@
//
// SWScrollView.h
// SWGameLib
//
// Copyright (c) 2010-2012 cocos2d-x.org
// Copyright (c) 2010 Sangwoo Im
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
//
// Created by Sangwoo Im on 6/3/10.
// Copyright 2010 Sangwoo Im. All rights reserved.
//
#ifndef __CCSCROLLVIEW_H__
#define __CCSCROLLVIEW_H__
#include "layers_scenes_transitions_nodes/CCLayer.h"
NS_CC_EXT_BEGIN
typedef enum {
CCScrollViewDirectionHorizontal = 0,
CCScrollViewDirectionVertical,
CCScrollViewDirectionBoth
} CCScrollViewDirection;
class CCScrollView;
class CC_DLL CCScrollViewDelegate
{
public:
virtual ~CCScrollViewDelegate() {}
virtual void scrollViewDidScroll(CCScrollView* view) = 0;
virtual void scrollViewDidZoom(CCScrollView* view) = 0;
};
/**
* ScrollView support for cocos2d for iphone.
* It provides scroll view functionalities to cocos2d projects natively.
*/
class CC_DLL CCScrollView : public CCLayer
{
public:
CCScrollView();
virtual ~CCScrollView();
bool init();
virtual void registerWithTouchDispatcher();
/**
* Returns an autoreleased scroll view object.
* @warning: This interface will be deprecated in future.
* @param size view size
* @param container parent object
* @return autoreleased scroll view object
*/
static CCScrollView* viewWithViewSize(CCSize size, CCNode* container = NULL);
/**
* Returns an autoreleased scroll view object.
*
* @param size view size
* @param container parent object
* @return autoreleased scroll view object
*/
static CCScrollView* create(CCSize size, CCNode* container = NULL);
/**
* Returns an autoreleased scroll view object.
* @warning: This interface will be deprecated in future.
* @param size view size
* @param container parent object
* @return autoreleased scroll view object
*/
static CCScrollView* node();
/**
* Returns an autoreleased scroll view object.
*
* @param size view size
* @param container parent object
* @return autoreleased scroll view object
*/
static CCScrollView* create();
/**
* Returns a scroll view object
*
* @param size view size
* @param container parent object
* @return scroll view object
*/
bool initWithViewSize(CCSize size, CCNode* container = NULL);
/**
* Sets a new content offset. It ignores max/min offset. It just sets what's given. (just like UIKit's UIScrollView)
*
* @param offset new offset
* @param If YES, the view scrolls to the new offset
*/
void setContentOffset(CCPoint offset, bool animated = false);
CCPoint getContentOffset();
/**
* Sets a new content offset. It ignores max/min offset. It just sets what's given. (just like UIKit's UIScrollView)
* You can override the animation duration with this method.
*
* @param offset new offset
* @param animation duration
*/
void setContentOffsetInDuration(CCPoint offset, float dt);
void setZoomScale(float s);
/**
* Sets a new scale and does that for a predefined duration.
*
* @param s a new scale vale
* @param animated if YES, scaling is animated
*/
void setZoomScale(float s, bool animated);
CCFloat getZoomScale();
/**
* Sets a new scale for container in a given duration.
*
* @param s a new scale value
* @param animation duration
*/
void setZoomScaleInDuration(float s, float dt);
/**
* Returns the current container's minimum offset. You may want this while you animate scrolling by yourself
*/
CCPoint minContainerOffset();
/**
* Returns the current container's maximum offset. You may want this while you animate scrolling by yourself
*/
CCPoint maxContainerOffset();
/**
* Determines if a given node's bounding box is in visible bounds
*
* @return YES if it is in visible bounds
*/
bool isNodeVisible(CCNode * node);
/**
* Provided to make scroll view compatible with SWLayer's pause method
*/
void pause(CCObject* sender);
/**
* Provided to make scroll view compatible with SWLayer's resume method
*/
void resume(CCObject* sender);
bool isDragging() {return m_bDragging;}
bool isTouchMoved() { return m_bTouchMoved; }
bool isBounceable() { return m_bBounceable; }
void setBounceable(bool bBounceable) { m_bBounceable = bBounceable; }
/**
* size to clip. CCNode boundingBox uses contentSize directly.
* It's semantically different what it actually means to common scroll views.
* Hence, this scroll view will use a separate size property.
*/
CCSize getViewSize() { return m_tViewSize; }
void setViewSize(CCSize size);
CCNode * getContainer();
void setContainer(CCNode * pContainer);
/**
* direction allowed to scroll. CCScrollViewDirectionBoth by default.
*/
CCScrollViewDirection getDirection() { return m_eDirection; }
void setDirection(CCScrollViewDirection eDirection) { m_eDirection = eDirection; }
CCScrollViewDelegate* getDelegate() { return m_pDelegate; }
void setDelegate(CCScrollViewDelegate* pDelegate) { m_pDelegate = pDelegate; }
/** override functions */
// optional
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);
virtual void setContentSize(CCSize size);
virtual CCSize getContentSize();
/**
* Determines whether it clips its children or not.
*/
bool isClippingToBounds() { return m_bClippingToBounds; }
void setClippingToBounds(bool bClippingToBounds) { m_bClippingToBounds = bClippingToBounds; }
virtual void visit();
virtual void addChild(CCNode * child, int zOrder, int tag);
virtual void addChild(CCNode * child, int zOrder);
virtual void addChild(CCNode * child);
void setTouchEnabled(bool e);
private:
/**
* Init this object with a given size to clip its content.
*
* @param size view size
* @return initialized scroll view object
*/
bool initWithViewSize(CCSize size);
/**
* Relocates the container at the proper offset, in bounds of max/min offsets.
*
* @param animated If YES, relocation is animated
*/
void relocateContainer(bool animated);
/**
* implements auto-scrolling behavior. change SCROLL_DEACCEL_RATE as needed to choose
* deacceleration speed. it must be less than 1.0f.
*
* @param dt delta
*/
void deaccelerateScrolling(float dt);
/**
* This method makes sure auto scrolling causes delegate to invoke its method
*/
void performedAnimatedScroll(float dt);
/**
* Expire animated scroll delegate calls
*/
void stoppedAnimatedScroll(CCNode* node);
/**
* clip this view so that outside of the visible bounds can be hidden.
*/
void beforeDraw();
/**
* retract what's done in beforeDraw so that there's no side effect to
* other nodes.
*/
void afterDraw();
/**
* Zoom handling
*/
void handleZoom();
protected:
/**
* current zoom scale
*/
CCFloat m_fZoomScale;
/**
* min zoom scale
*/
CCFloat m_fMinZoomScale;
/**
* max zoom scale
*/
CCFloat m_fMaxZoomScale;
/**
* scroll view delegate
*/
CCScrollViewDelegate* m_pDelegate;
CCScrollViewDirection m_eDirection;
/**
* If YES, the view is being dragged.
*/
bool m_bDragging;
/**
* Content offset. Note that left-bottom point is the origin
*/
CCPoint m_tContentOffset;
/**
* Container holds scroll view contents, Sets the scrollable container object of the scroll view
*/
CCNode* m_pContainer;
/**
* Determiens whether user touch is moved after begin phase.
*/
bool m_bTouchMoved;
/**
* max inset point to limit scrolling by touch
*/
CCPoint m_fMaxInset;
/**
* min inset point to limit scrolling by touch
*/
CCPoint m_fMinInset;
/**
* Determines whether the scroll view is allowed to bounce or not.
*/
bool m_bBounceable;
bool m_bClippingToBounds;
/**
* scroll speed
*/
CCPoint m_tScrollDistance;
/**
* Touch point
*/
CCPoint m_tTouchPoint;
/**
* length between two fingers
*/
CCFloat m_fTouchLength;
/**
* UITouch objects to detect multitouch
*/
CCArray* m_pTouches;
/**
* size to clip. CCNode boundingBox uses contentSize directly.
* It's semantically different what it actually means to common scroll views.
* Hence, this scroll view will use a separate size property.
*/
CCSize m_tViewSize;
/**
* max and min scale
*/
CCFloat m_fMinScale, m_fMaxScale;
};
NS_CC_EXT_END
#endif /* __CCSCROLLVIEW_H__ */

View File

@ -5,5 +5,6 @@
#include "extensions/CCControlExtension/CCControlExtensions.h"
#include "extensions/CCListView/CCListView.h"
#include "extensions/CCTextureWatcher/CCTextureWatcher.h"
#include "extensions/CCScrollView/CCScrollView.h"
#endif /* __COCOS2DEXT_H__ */

View File

@ -1 +1 @@
09db4ca2f8aea11791d3c39709ea90d4dabd3327
1b9cd698b4218156a0fa72a86827864d77ee83ee

View File

@ -1334,10 +1334,6 @@
RelativePath="..\extensions\CCBReader\CCMenuItemLoader.h"
>
</File>
<File
RelativePath="..\extensions\CCBReader\CCMenuLoader.cpp"
>
</File>
<File
RelativePath="..\extensions\CCBReader\CCMenuLoader.h"
>
@ -1378,6 +1374,14 @@
RelativePath="..\extensions\CCBReader\CCScale9SpriteLoader.h"
>
</File>
<File
RelativePath="..\extensions\CCBReader\CCScrollViewLoader.cpp"
>
</File>
<File
RelativePath="..\extensions\CCBReader\CCScrollViewLoader.h"
>
</File>
<File
RelativePath="..\extensions\CCBReader\CCSpriteLoader.cpp"
>
@ -1387,6 +1391,18 @@
>
</File>
</Filter>
<Filter
Name="CCScrollView"
>
<File
RelativePath="..\extensions\CCScrollView\CCScrollView.cpp"
>
</File>
<File
RelativePath="..\extensions\CCScrollView\CCScrollView.h"
>
</File>
</Filter>
</Filter>
<Filter
Name="kazmath"

View File

@ -174,11 +174,11 @@ xcopy /Y /Q "$(SolutionDir)cocos2dx\platform\third_party\win32\libraries\*.*" "$
<ClCompile Include="..\extensions\CCBReader\CCLayerLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCMenuItemImageLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCMenuItemLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCMenuLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCNodeLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCNodeLoaderLibrary.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCParticleSystemQuadLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCScale9SpriteLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCScrollViewLoader.cpp" />
<ClCompile Include="..\extensions\CCBReader\CCSpriteLoader.cpp" />
<ClCompile Include="..\extensions\CCControlExtension\CCControl.cpp" />
<ClCompile Include="..\extensions\CCControlExtension\CCControlButton.cpp" />
@ -195,6 +195,7 @@ xcopy /Y /Q "$(SolutionDir)cocos2dx\platform\third_party\win32\libraries\*.*" "$
<ClCompile Include="..\extensions\CCListView\CCListView.cpp" />
<ClCompile Include="..\extensions\CCListView\CCListViewCell.cpp" />
<ClCompile Include="..\extensions\CCNotificationCenter\CCNotificationCenter.cpp" />
<ClCompile Include="..\extensions\CCScrollView\CCScrollView.cpp" />
<ClCompile Include="..\extensions\CCTextureWatcher\CCTextureWatcher.cpp" />
<ClCompile Include="..\kazmath\src\aabb.c" />
<ClCompile Include="..\kazmath\src\GL\mat4stack.c" />
@ -330,6 +331,7 @@ xcopy /Y /Q "$(SolutionDir)cocos2dx\platform\third_party\win32\libraries\*.*" "$
<ClInclude Include="..\extensions\CCBReader\CCNodeLoaderListener.h" />
<ClInclude Include="..\extensions\CCBReader\CCParticleSystemQuadLoader.h" />
<ClInclude Include="..\extensions\CCBReader\CCScale9SpriteLoader.h" />
<ClInclude Include="..\extensions\CCBReader\CCScrollViewLoader.h" />
<ClInclude Include="..\extensions\CCBReader\CCSpriteLoader.h" />
<ClInclude Include="..\extensions\CCControlExtension\CCControl.h" />
<ClInclude Include="..\extensions\CCControlExtension\CCControlButton.h" />
@ -348,6 +350,7 @@ xcopy /Y /Q "$(SolutionDir)cocos2dx\platform\third_party\win32\libraries\*.*" "$
<ClInclude Include="..\extensions\CCListView\CCListView.h" />
<ClInclude Include="..\extensions\CCListView\CCListViewCell.h" />
<ClInclude Include="..\extensions\CCNotificationCenter\CCNotificationCenter.h" />
<ClInclude Include="..\extensions\CCScrollView\CCScrollView.h" />
<ClInclude Include="..\extensions\CCTextureWatcher\CCTextureWatcher.h" />
<ClInclude Include="..\include\ccConfig.h" />
<ClInclude Include="..\include\CCEventType.h" />

View File

@ -109,6 +109,9 @@
<Filter Include="extensions\CCBReader">
<UniqueIdentifier>{4647762c-52c3-475d-968a-96aa48dbcd0c}</UniqueIdentifier>
</Filter>
<Filter Include="extensions\CCScrollView">
<UniqueIdentifier>{a9d9fee5-8d26-4082-b526-2b7830770446}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\effects\CCGrabber.cpp">
@ -510,9 +513,6 @@
<ClCompile Include="..\extensions\CCBReader\CCMenuItemLoader.cpp">
<Filter>extensions\CCBReader</Filter>
</ClCompile>
<ClCompile Include="..\extensions\CCBReader\CCMenuLoader.cpp">
<Filter>extensions\CCBReader</Filter>
</ClCompile>
<ClCompile Include="..\extensions\CCBReader\CCNodeLoader.cpp">
<Filter>extensions\CCBReader</Filter>
</ClCompile>
@ -537,6 +537,12 @@
<ClCompile Include="..\actions\CCActionCatmullRom.cpp">
<Filter>actions</Filter>
</ClCompile>
<ClCompile Include="..\extensions\CCScrollView\CCScrollView.cpp">
<Filter>extensions\CCScrollView</Filter>
</ClCompile>
<ClCompile Include="..\extensions\CCBReader\CCScrollViewLoader.cpp">
<Filter>extensions\CCBReader</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\effects\CCGrabber.h">
@ -1087,5 +1093,11 @@
<ClInclude Include="..\actions\CCActionCatmullRom.h">
<Filter>actions</Filter>
</ClInclude>
<ClInclude Include="..\extensions\CCScrollView\CCScrollView.h">
<Filter>extensions\CCScrollView</Filter>
</ClInclude>
<ClInclude Include="..\extensions\CCBReader\CCScrollViewLoader.h">
<Filter>extensions\CCBReader</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -30,7 +30,7 @@ THE SOFTWARE.
NS_CC_BEGIN
class CCTouch : public CCObject
class CC_DLL CCTouch : public CCObject
{
public:
CCTouch()
@ -59,7 +59,7 @@ private:
CCPoint m_prevPoint;
};
class CCEvent : public CCObject
class CC_DLL CCEvent : public CCObject
{
};

View File

@ -1 +1 @@
80e25f0506e93a93d244735fd6deb92cec8055d2
237baaafa1073d1c133294a70e84bcd2849ec57d

View File

@ -1 +1 @@
cf9109aeec89b5dafb4bc9588c59b279c734d0a2
c13eb2b1ec38e28d1537f0671e700e1af00dd31e

View File

@ -1001,6 +1001,18 @@
>
</File>
</Filter>
<Filter
Name="ScrollViewTest"
>
<File
RelativePath="..\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest\ScrollViewTestLayer.h"
>
</File>
<File
RelativePath="..\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest\ScrollViewTestLayerLoader.h"
>
</File>
</Filter>
</Filter>
</Filter>
<Filter

View File

@ -125,13 +125,11 @@
<ClCompile Include="..\tests\BugsTest\BugsTest.cpp" />
<ClCompile Include="..\tests\ChipmunkAccelTouchTest\ChipmunkAccelTouchTest.cpp" />
<ClCompile Include="..\tests\CurrentLanguageTest\CurrentLanguageTest.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayer.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayerLoader.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTest\ButtonTestLayer.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\CocosBuilderTest.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayer.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayerLoader.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayer.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayerLoader.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder\HelloCocosBuilderLayer.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\MenuTest\MenuTestLayer.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeader\TestHeaderLayer.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\ControlExtensionTest\CCControlButtonTest\CCControlButtonTest.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\ControlExtensionTest\CCControlColourPicker\CCControlColourPickerTest.cpp" />
<ClCompile Include="..\tests\ExtensionsTest\ControlExtensionTest\CCControlScene.cpp" />
@ -208,13 +206,23 @@
<ClInclude Include="..\tests\BugsTest\BugsTest.h" />
<ClInclude Include="..\tests\ChipmunkAccelTouchTest\ChipmunkAccelTouchTest.h" />
<ClInclude Include="..\tests\CurrentLanguageTest\CurrentLanguageTest.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTest\ButtonTestLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTest\ButtonTestLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\CocosBuilderTest.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder\HelloCocosBuilderLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder\HelloCocosBuilderLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\LabelTest\LabelTestLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\LabelTest\LabelTestLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\MenuTest\MenuTestLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\MenuTest\MenuTestLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ParticleSystemTest\ParticleSystemTestLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ParticleSystemTest\ParticleSystemTestLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest\ScrollViewTestLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest\ScrollViewTestLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\SpriteTest\SpriteTestLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\SpriteTest\SpriteTestLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeader\TestHeaderLayer.h" />
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeader\TestHeaderLayerLoader.h" />
<ClInclude Include="..\tests\ExtensionsTest\ControlExtensionTest\CCControlButtonTest\CCControlButtonTest.h" />
<ClInclude Include="..\tests\ExtensionsTest\ControlExtensionTest\CCControlColourPicker\CCControlColourPickerTest.h" />
<ClInclude Include="..\tests\ExtensionsTest\ControlExtensionTest\CCControlScene.h" />

View File

@ -166,6 +166,30 @@
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest">
<UniqueIdentifier>{2e6b7147-7836-4a98-a2f5-a00080e7ca23}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\ButtonTest">
<UniqueIdentifier>{b6567e7e-4af7-4e84-857a-affc03c1332a}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder">
<UniqueIdentifier>{5b3fcb56-0c0f-4433-a209-50ffca282f88}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\LabelTest">
<UniqueIdentifier>{629b76d1-2144-49f0-a2ef-357caa97d0dc}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\MenuTest">
<UniqueIdentifier>{eee8a971-55ff-46ca-8d1f-7b03feb9481c}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\ParticleSystemTest">
<UniqueIdentifier>{ff19ea2d-70c2-444d-8d41-7ce3cd208dbd}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest">
<UniqueIdentifier>{706efc28-51b2-48d9-bcd9-b76f49eb68a5}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\SpriteTest">
<UniqueIdentifier>{8a4f12b4-f105-495c-83d6-0005d05b61a0}</UniqueIdentifier>
</Filter>
<Filter Include="classes\tests\ExtensionsTest\CocosBuilderTest\TestHeader">
<UniqueIdentifier>{4c0682f3-b85a-4418-adda-9b25de410af0}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cpp">
@ -390,26 +414,20 @@
<ClCompile Include="..\tests\MutiTouchTest\MutiTouchTest.cpp">
<Filter>classes\tests\MutiTouchTest</Filter>
</ClCompile>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayer.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
</ClCompile>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayerLoader.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
</ClCompile>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\CocosBuilderTest.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
</ClCompile>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayer.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeader\TestHeaderLayer.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\TestHeader</Filter>
</ClCompile>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayerLoader.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\MenuTest\MenuTestLayer.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\MenuTest</Filter>
</ClCompile>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayer.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder\HelloCocosBuilderLayer.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder</Filter>
</ClCompile>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayerLoader.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClCompile Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTest\ButtonTestLayer.cpp">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\ButtonTest</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
@ -749,26 +767,56 @@
<ClInclude Include="..\tests\MutiTouchTest\MutiTouchTest.h">
<Filter>classes\tests\MutiTouchTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTestLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\CocosBuilderTest.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeader\TestHeaderLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\TestHeader</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilderLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeader\TestHeaderLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\TestHeader</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\SpriteTest\SpriteTestLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\SpriteTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\TestHeaderLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest</Filter>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\SpriteTest\SpriteTestLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\SpriteTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest\ScrollViewTestLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest\ScrollViewTestLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\ScrollViewTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ParticleSystemTest\ParticleSystemTestLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\ParticleSystemTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ParticleSystemTest\ParticleSystemTestLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\ParticleSystemTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\MenuTest\MenuTestLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\MenuTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\MenuTest\MenuTestLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\MenuTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\LabelTest\LabelTestLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\LabelTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\LabelTest\LabelTestLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\LabelTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder\HelloCocosBuilderLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder\HelloCocosBuilderLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTest\ButtonTestLayer.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\ButtonTest</Filter>
</ClInclude>
<ClInclude Include="..\tests\ExtensionsTest\CocosBuilderTest\ButtonTest\ButtonTestLayerLoader.h">
<Filter>classes\tests\ExtensionsTest\CocosBuilderTest\ButtonTest</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -9,6 +9,7 @@
#include "../SpriteTest/SpriteTestLayerLoader.h"
#include "../MenuTest/MenuTestLayerLoader.h"
#include "../ParticleSystemTest/ParticleSystemTestLayerLoader.h"
#include "../ScrollViewTest/ScrollViewTestLayerLoader.h"
USING_NS_CC;
USING_NS_CC_EXT;
@ -101,5 +102,5 @@ void HelloCocosBuilderLayer::onParticleSystemTestClicked(CCObject * pSender, coc
}
void HelloCocosBuilderLayer::onScrollViewTestClicked(CCObject * pSender, cocos2d::extension::CCControlEvent pCCControlEvent) {
CCLog("onScrollViewTestClicked\n");
this->openTest("ccb/ScrollViewTest.ccbi", "ScrollViewTestLayer", ScrollViewTestLayerLoader::loader());
}

View File

@ -0,0 +1,12 @@
#ifndef _SCROLLVIEWTESTLAYER_H_
#define _SCROLLVIEWTESTLAYER_H_
#include "cocos2d.h"
#include "extensions/CCBReader/CCBReader.h"
class ScrollViewTestLayer : public cocos2d::CCLayer {
public:
CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(ScrollViewTestLayer, node);
};
#endif

View File

@ -0,0 +1,18 @@
#ifndef _SCROLLVIEWTESTLAYERLOADER_H_
#define _SCROLLVIEWTESTLAYERLOADER_H_
#include "extensions/CCBReader/CCLayerLoader.h"
#include "ScrollViewTestLayer.h"
/* Forward declaration. */
class CCBReader;
class ScrollViewTestLayerLoader : public cocos2d::extension::CCLayerLoader {
public:
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(ScrollViewTestLayerLoader, loader);
protected:
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(ScrollViewTestLayer);
};
#endif

View File

@ -50,7 +50,7 @@ class CCNode : public CCObject
tolua_property__CCSkewY float skewY;
// tolua_property__CCIsVisible bool isVisible;
tolua_property__CCAnchorPoint CCPoint anchorPoint;
tolua_property__CCContentSize CCSize contentSize;
// tolua_property__CCContentSize CCSize contentSize;
tolua_property__CCTag int tag;
CCArray* getChildren();