2012-03-04 62 views
0

我很接近這個想法,只需要最後一點(邏輯)。在下面的代碼中,背景垂直滾動(帶有觸摸)並且以正確的方向(即向下)進行。如何使用Cocos2d與Touches垂直滾動我的背景?

問題是,它不會停止時,它得到超出背景圖片的內容大小滾動...

(CGPoint)boundLayerPos:(CGPoint)newPos { 
CGSize winSize = [CCDirector sharedDirector].winSize; 
CGPoint retval = newPos; 
retval.y = -MAX(retval.y, -background.contentSize.height+winSize.height); 
retval.y = -MIN(retval.y, 0); 
retval.x = self.position.x; 
return retval; 
} 

,我也想知道如何使滾動看起來更加自然...即。一種方式來繼續一段時間,但減速時發生TouchesEnded時停止...

回答

0

這個問題令人困惑,因爲直覺上你的大腦認爲前景正在移動,但它真的是你需要移動的背景,以便它出現就好像前景正在移動......因此很容易在x/y,-x/y,x/-y,-x/-y組合中迷失。與其他人交流也有點困惑(例如,你的意思是「up」還是你的意思是「down」)...

對我來說,我需要前景似乎是向下滾動,因爲它正在滾動直到它到達底部。我意識到這意味着背景(自我)必須向上移動,直到達到最高點(1539.0),這意味着它現在顯示背景圖像的底部。最後我用我的週期/更新方法如下,它的工作原理(即阻止任何進一步的滾動):

if (self.position.y > 1539.0f) { 

    //CCLOG(@"My position is greater than 1539"); 

    self.position = ccp(self.position.x, 1539.0f); 

} 

不知道如何使滾動看起來更加自然,但是...