#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
#include "cocos-ext.h"
using namespace cocos2d
;
using namespace cocos2d::extension;
class HelloWorld : public cocos2d::CCLayer ,public CCScrollViewDelegate
{
public:
// Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)
virtual bool init();
// there's no 'id' in cpp, so we recommend to return the class instance pointer
static cocos2d::CCScene* scene();
// a selector callback
void menuCloseCallback(CCObject* pSender);
// preprocessor macro for "static create()" constructor ( node() deprecated )
CREATE_FUNC(HelloWorld);
virtual void scrollViewDidScroll(CCScrollView* view) ;
virtual void scrollViewDidZoom(CCScrollView* view) ;
};
#endif // __HELLOWORLD_SCENE_H__
#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
using namespace cocos2d;
using namespace CocosDenshion;
using namespace std;
CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool HelloWorld::init()
{
//
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
/
// 2. add a menu item with "X" image, which is clicked to quit the program
// you may modify it.
// add a "close" icon to exit the progress. it's an autorelease object
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback) );
pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
// create menu, it's an autorelease object
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition( CCPointZero );
this->addChild(pMenu, 1);
/
// ask director the window size
CCSize size = CCDirector::sharedDirector()->getWinSize();
//创建一个Laye作为容器
CCLayer *containLayer=CCLayer::create();
CCSprite *sprite=CCSprite::create("Icon.png");
sprite->setPosition(ccp(size.width*0.5, size.height*0.5));
CCSprite *sprite2=CCSprite::create("Default.png");
sprite2->setPosition(ccp(sprite->getContentSize().width, size.height*0.2));
//往容器添加节点
containLayer->addChild(sprite);
containLayer->addChild(sprite2);
containLayer->setContentSize(CCSizeMake(size.width*3, size.height));
//创建视图添加当前layer
cocos2d::extension::CCScrollView *scrollView=cocos2d::extension::CCScrollView::create(CCSizeMake(size.width*2, size.height));
this->addChild(scrollView);
//用户是否正在CCScrollView 中操作
scrollView->isDragging();
//用户是否正在CCScrollView 中 移动操作
scrollView->isTouchMoved();
//是否开启弹性效果
scrollView->isBounceable();
//设置scrollview有弹性效果(默认为true)
scrollView->setBounceable(true);
//设置尺寸
scrollView->setViewSize(CCSizeMake(size.width*2, size.height));
//设置容器
scrollView->setContainer(containLayer);
//获取视图尺寸
scrollView->getViewSize();
//务必在AppController.mm 中开启iOS对出点的支持
//[__glview setMultipleTouchEnalbed:YES]
scrollView->cocos2d::CCLayer::setTouchEnabled(true);//开启监听触点的支持
scrollView->setDelegate(this);//注册监听
return true;
}
void HelloWorld::scrollViewDidScroll(CCScrollView* view)
{
cout<<"scrollView 移动"<<endl;
CCLog("scrollView 移动");
}
void HelloWorld::scrollViewDidZoom(CCScrollView* view)
{
cout<<"scrollView 缩放"<<endl;
CCLog("scrollView 缩放");
}
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}