一、創建
2.1.0下的能用的創建CCScrollView的方法有四種,但是有兩種不推薦使用
-
CC_DEPRECATED_ATTRIBUTE static CCScrollView* viewWithViewSize(CCSize size, CCNode* container = NULL); //已不推薦使用
-
CC_DEPRECATED_ATTRIBUTE static CCScrollView* node(); //已不推薦使用
-
static CCScrollView* create();
- static CCScrollView* create(CCSize size, CCNode* container = NULL);
-
CCScrollView* scrollView = CCScrollView::create(); // 創建一個實例
-
scrollView->setContentSize(CCSizeMake(960, 720)); //設置容器大小(內容尺寸)
-
scrollView->setViewSize(CCSizeMake(480, 360)); //設置顯示(可視)範圍
- this->addChild(scrollView);
-
CCScrollView* scrollView = CCScrollView::create(CCSizeMake(480, 360)); // 創建實例 同時設置了顯示(可視)範圍
-
scrollView->setContentSize(CCSizeMake(960, 720)); // 設置容器大小(內容尺寸)
- this->addChild(scrollView);
二、容器
CCScrollView在工作的時候需要用到一個容器來裝所有可以滾動的內容物,即滾動層。默認會自行創建CCLayer的實例作容器,容器的錨點設置在左下角。
-
if (!this->m_pContainer)
-
{
-
m_pContainer = CCLayer::create();
-
this->m_pContainer->ignoreAnchorPointForPosition(false);
-
this->m_pContainer->setAnchorPoint(ccp(0.0f, 0.0f));
- }
-
CCLayerColor* layer = CCLayerColor::create(ccc4(255, 255, 255, 255), 960, 720);
-
-
CCScrollView* scrollView = CCScrollView::create(CCSizeMake(480, 360), layer);
-
scrollView->setContentSize(CCSizeMake(960, 720));
- this->addChild(scrollView);
三、容器大小(內容尺寸)和 顯示(可視)範圍
舉個例子,好比你透過窗戶去看風景,你一眼能看到多少取決於窗戶有多大,這裏窗戶的大小就是可視範圍。假設你和窗戶是不能移動的,如果你想看到其他不在可視範圍內的部分,就需要CCScrollView 來幫你移動風景,容器的大小就是風景的大小,也就是風景的尺寸。
再比如有一張1000*1000像素的圖片,設定100*100的可視範圍,你每次只能看到百分之一的範圍,但是通過移動圖片的位置,你能看全整張圖片。1000*1000就是內容尺寸,100*100就是顯示範圍。
將一個大的範圍遮起來,只露一個小窗口,但是允許你一點一點的滾動,這就是CCScrollView 的工作。
四、內容物
CCScrollView 重載了AddChild,使得非容器本身的元素都會添加到容器上,並且設置內容物的錨點爲左下角。
-
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);
-
}
- }
五、滾動方向
CCScrollView在創建的時候,默認是允許橫向和縱向都可以滾動的。
- m_eDirection = kCCScrollViewDirectionBoth;