2012-01-17 66 views
0

我想設置scrollayer的內容。Cocos2d iPhone。 Scrollayer contentSize。圖層

我有一個滾動條,它是CCLayer類型,移動由ccTouchMove設置。我有一個平滑的時間表。但。

問題在於滾動層像整個顯示器一樣大。我想設置scrollayer的內容。此圖層中的內容將滾動並僅顯示在此圖層中。沒有佔用整個顯示器。事情是這樣的

enter image description here

滾動只是在灰色CCLayer(scrollayer)......而不是整個屏幕。

你能幫我嗎?

P.S .:設置CCLayerColor和initWithColor:寬度:高度:不起作用。它只是使一些愚蠢的彩盒,它也在移動。

+0

什麼是白色矩形?它是在滾動動作期間保持原位的滾動圖層的掩模部分,還是您的意思是隻顯示滾動圖層的裁剪部分,但背景(滾動圖像後面)將顯示白色矩形是? – YvesLeBorg 2012-01-17 23:00:16

+0

z-index:0 ---背景內容,例如白色的CCSprite,z-index:1 --- CCLayer ScrollLayer - INSIDE scrolllayer將是例如CCLabelTTF的對象。 .......裏面意味着CCLabelTTF將是CCLayer的滾動層 – mayoxy 2012-01-18 10:53:47

+0

的孩子,但..如果我現在想這個,... scrolllayer正在移動,滾動,。所以... – mayoxy 2012-01-18 10:56:47

回答

0

好的,老實說,我會把窗口框架放在比滾動對象更高的z處......如果你不需要裁剪和改變窗口內容的飛行精靈,討厭(至少那是我可以做到這一點,沒有進一步的研究)。

這樣:

// initialize this logic somewhere useful 

CCNode scrollableContent; 
CCSprite windowFrame; 
BOOL isScrollPossible; 
[self addChild:scrollableContent z:0]; 
[self addChild:windowFrame z:1]; 

// and in the touch delegate methods 

-(void) ccTouchBegan:{ 
    check if the touch happened in the window, if yes, scrolling is possible 
} 
-(void) ccTouchMoved:{ 
    if (isScrollPossible) { 

    compute displacement 
    compute nextPosition for scrollableContent node; 
    if (nextPosition in window) { 
     // make scrollableContent follow touch 
     scrollableContent.position=nextPosition; 
    } else { 
     // stop any further scrolling until the next 'touch began' 
     isScrollPossible=NO; 
    } 
    } else { 
    // scroll not possible, do nothing 
    } 
} 

這是基本的想法。您可能需要夾緊邏輯來防止滾動內容超出窗口邊緣。

爲錯別字編輯。

0

拼命地嘗試屏蔽和GL_SCISSOR之後,我決定在前景中切割一個洞,並在更新onTouchMoved時只移動背景對象。

要看到它的行動,看看Angry Gran統計頁面。