CCScrollView使用方法

因爲官方沒有提供CCScrollView的例子,所以我簡單的總結了一下CCScrollView的使用,以供像我這樣的新手在初學的時候參考。
一、創建
2.1.0下的能用的創建CCScrollView的方法有四種,但是有兩種不推薦使用
  1. CC_DEPRECATED_ATTRIBUTE static CCScrollView* viewWithViewSize(CCSize size, CCNode* container = NULL); //已不推薦使用
  2. CC_DEPRECATED_ATTRIBUTE static CCScrollView* node(); //已不推薦使用
  3. static CCScrollView* create();
  4. static CCScrollView* create(CCSize size, CCNode* container = NULL);
複製代碼
剩下兩種,寫法雖有區別,但是歸納起來,使CCScrollView 能正常工作的要素就三個。一、創建一個CCScrollView 的實例;二、設置容器大小(內容尺寸);三、設置顯示(可視)範圍。第一、二點是必須的,第三點視使用的創建方法不同,不需要單獨寫。舉例如下:
  1. CCScrollView* scrollView = CCScrollView::create(); // 創建一個實例
  2. scrollView->setContentSize(CCSizeMake(960, 720)); //設置容器大小(內容尺寸)
  3. scrollView->setViewSize(CCSizeMake(480, 360)); //設置顯示(可視)範圍 
  4. this->addChild(scrollView);
複製代碼
  1. CCScrollView* scrollView = CCScrollView::create(CCSizeMake(480, 360)); // 創建實例 同時設置了顯示(可視)範圍 
  2. scrollView->setContentSize(CCSizeMake(960, 720)); // 設置容器大小(內容尺寸)
  3. this->addChild(scrollView);
複製代碼
setContentSize 是必須的步驟,不然會導致CCScrollView 不能滾動。
二、容器
CCScrollView在工作的時候需要用到一個容器來裝所有可以滾動的內容物,即滾動層。默認會自行創建CCLayer的實例作容器,容器的錨點設置在左下角。
  1. if (!this->m_pContainer)
  2. {
  3.             m_pContainer = CCLayer::create();
  4.             this->m_pContainer->ignoreAnchorPointForPosition(false);
  5.             this->m_pContainer->setAnchorPoint(ccp(0.0f, 0.0f));
  6. }
複製代碼
但是如果你需要用其他容器的話,你可以在create的時候自行指定。比如用CClayerColor
  1. CCLayerColor* layer = CCLayerColor::create(ccc4(255, 255, 255, 255), 960, 720);

  2. CCScrollView* scrollView = CCScrollView::create(CCSizeMake(480, 360), layer);
  3. scrollView->setContentSize(CCSizeMake(960, 720));
  4. this->addChild(scrollView);
複製代碼
也可以使用 CCScrollView::setContainer 替換現有的容器。用CCScrollView::getContainer可以獲得容器的指針。
三、容器大小(內容尺寸)和 顯示(可視)範圍
舉個例子,好比你透過窗戶去看風景,你一眼能看到多少取決於窗戶有多大,這裏窗戶的大小就是可視範圍。假設你和窗戶是不能移動的,如果你想看到其他不在可視範圍內的部分,就需要CCScrollView 來幫你移動風景,容器的大小就是風景的大小,也就是風景的尺寸。
再比如有一張1000*1000像素的圖片,設定100*100的可視範圍,你每次只能看到百分之一的範圍,但是通過移動圖片的位置,你能看全整張圖片。1000*1000就是內容尺寸,100*100就是顯示範圍。
將一個大的範圍遮起來,只露一個小窗口,但是允許你一點一點的滾動,這就是CCScrollView 的工作。
四、內容物
CCScrollView 重載了AddChild,使得非容器本身的元素都會添加到容器上,並且設置內容物的錨點爲左下角。
  1. void CCScrollView::addChild(CCNode * child, int zOrder, int tag)
  2. {
  3.         child->ignoreAnchorPointForPosition(false);
  4.         child->setAnchorPoint(ccp(0.0f, 0.0f));
  5.         if (m_pContainer != child) {
  6.                 m_pContainer->addChild(child, zOrder, tag);
  7.         } else {
  8.                 CCLayer::addChild(child, zOrder, tag);
  9.         }
  10. }
複製代碼
所以 scrollView->AddChild() 和 scrollView->getContainer()->AddChild(),除了錨點上有差別外,其他的功能應該是一樣的。
五、滾動方向
CCScrollView在創建的時候,默認是允許橫向和縱向都可以滾動的。
  1. m_eDirection  = kCCScrollViewDirectionBoth;
複製代碼
如果你想限制滾動的方向,可以用 setDirection 來設置。kCCScrollViewDirectionHorizontal是允許橫向滾動,kCCScrollViewDirectionVertical是允許縱向滾動。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章