cocosbuilder中scrollview的使用




//
//  Created by sky on 14-8-19.
#include <iostream>
#include 
"cocos2d.h"
#include 
"cocos-ext.h"
USING_NS_CC
;
USING_NS_CC_EXT;

class DaojuHelpLayer:public CCLayer,
                    public CCNodeLoaderListener,
                    
public CCBSelectorResolver,
                    
public CCBMemberVariableAssigner
{
private:
    
CCScrollView *m_pScrollView;
    
CCControlButton *m_pButton;
    
void onBackBtnCallback(CCObject *p,CCControlEvent *e);
public:
    
static CCScene* createScene();
    
static CCNode* createDaojuHelpLayer();
    DaojuHelpLayer();
    ~DaojuHelpLayer();
    
    
CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(DaojuHelpLayer, create);

    
//節點加載完畢調用
    
virtual void onNodeLoaded(CCNode * pNode, CCNodeLoader * pNodeLoader);
    
    
//實現CCBMemberVariableAssigner接口連接變量
    
virtual bool onAssignCCBMemberVariable(CCObject* pTarget, const char* pMemberVariableName, CCNode* pNode);
    
    
//實現CCBSelectorResolver接口, 用於連接菜單項
    
virtual SEL_MenuHandler onResolveCCBCCMenuItemSelector(CCObject * pTarget, const char* pSelectorName);
    
//實現CCBSelectorResolver接口, 用於連接CCControl
    
virtual SEL_CCControlHandler onResolveCCBCCControlSelector(CCObject * pTarget, const char* pSelectorName);
};

class CCBReader;

class DaojuHelpLayerLoader:public CCLayerLoader
{
public:
    
//使用loader創建loader
    CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(DaojuHelpLayerLoader, loader);
protected:
    
//調用create方法創建DaojuHelpLayer類對象
    CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(DaojuHelpLayer);
};


//
//  DaojuHelpLayer.cpp
//
//  Created by sky on 14-8-19.
//
//

#include "DaojuHelpLayer.h"

DaojuHelpLayer::DaojuHelpLayer()
{
    
}
DaojuHelpLayer::~DaojuHelpLayer()
{
    
}

CCSceneDaojuHelpLayer::createScene()
{
    
CCScene *scene = CCScene::create();
    
    
CCNodeLoaderLibrary *ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    ccNodeLoaderLibrary -> 
registerCCNodeLoader("DaojuHelpLayer"DaojuHelpLayerLoader::loader());
    
cocos2d::extension::CCBReader *reader = new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);
    reader -> 
autorelease();
    
CCNode *node = reader->readNodeGraphFromFile("DaojuHelpUI", scene);
    
CCAssert(node!=NULL"讀取失敗");
    scene -> 
addChild(node);
    
    
return scene;
}

CCNodeDaojuHelpLayer::createDaojuHelpLayer()
{
    
CCNodeLoaderLibrary *ccNodeLoaderLibrary = CCNodeLoaderLibrary::newDefaultCCNodeLoaderLibrary();
    ccNodeLoaderLibrary -> 
registerCCNodeLoader("DaojuHelpLayer"DaojuHelpLayerLoader::loader());
    
cocos2d::extension::CCBReader *reader = new cocos2d::extension::CCBReader(ccNodeLoaderLibrary);
    reader -> 
autorelease();
    
CCNode *node = reader->readNodeGraphFromFile("DaojuHelpUI");
    
CCAssert(node!=NULL"讀取失敗");
    
return node;
}

void DaojuHelpLayer::onNodeLoaded(cocos2d::CCNode *pNode, cocos2d::extension::CCNodeLoader *pNodeLoader)
{
    
CCLog("you will enter the daoju help layer...");
    
CCLog("tag:%d",m_pScrollView->getTag());
    
CCLog("maxoffset:%f,%f",m_pScrollView->minContainerOffset().x,m_pScrollView->minContainerOffset().y);
    
m_pScrollView -> setContentOffset(m_pScrollView->minContainerOffset());
}

bool DaojuHelpLayer::onAssignCCBMemberVariable(cocos2d::CCObject *pTarget, const char *pMemberVariableName, cocos2d::CCNode *pNode)
{
//    CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "mScrollView", CCScrollView*, this->m_pScrollView);
    CCB_MEMBERVARIABLEASSIGNER_GLUE(
this"backBtn", CCControlButton*, this->m_pButton);
    CCB_MEMBERVARIABLEASSIGNER_GLUE_WEAK(
this"mScrollView", CCScrollView*, this->m_pScrollView);
    
return false;
}

SEL_MenuHandler DaojuHelpLayer::onResolveCCBCCMenuItemSelector(cocos2d::CCObject *pTarget, 
const char *pSelectorName)
{
    
return NULL;
}

SEL_CCControlHandler DaojuHelpLayer::onResolveCCBCCControlSelector(cocos2d::CCObject *pTarget, 
const char *pSelectorName)
{
    
CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this"backToMain"DaojuHelpLayer::onBackBtnCallback);
    
    
return NULL;
}

void DaojuHelpLayer::onBackBtnCallback(cocos2d::CCObject *p, CCControlEvent *e)
{
    
CCLog("backBtn callback...");
}



發佈了32 篇原創文章 · 獲贊 23 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章