close

[熱門]6sina300cocos2d環遊指北第十章 拖啡釉如


selSprite=newSprite;
-(BOOL)ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event{
CGPointtouchLocation=[immolationconvertTouchToNodeSpace:touch];
[immolationselectSpriteForTouch:touchLocation];
return TRUE;
以上代碼中,第一個體例(selectSpriteForTouch)是一個幫助性格式,它遍曆了moveableSprites數組的統統細靈,並查找第一個搜羅觸摸麵的細靈。
需供寄看的是,CCNode有一個屬性叫boundingBox,會返回細靈的鴻溝框。操做阿誰屬性較著比自己鉀葡要好。因為何等做更簡樸,同時也思索了細靈的變形。
當我們找迪蘋個婚配的細靈後,會讓阿誰細靈真止一個小小的動繪,從而讓映雩知講選中了哪個細靈。此時,起尾要消弭之前所選中細靈正正在真止的動繪,然後操做動做序列讓細靈往複“動搖”(便像iOS設備裏裏刪除或移動操做吐的時間那樣)。
末了,ccTouchBegan格式正在收遭到映雩觸摸事件時挪郵艸脈格式。需供寄看的是,必須把觸摸麵的位置從UIView的坐標轉換成遊戲彩傾(節麵空間)的坐標。那邊我們操做convertTouchToNodeSpace格式去真現這一麵,它完成了三件工做:
1.鉀葡出觸摸麵正在觸摸視圖中的位置(經過進程locationInView)
2.將觸摸麵坐標轉換成OpenGL 坐標(經過進程convertToGL)
3.將OpenGL坐標轉換成特定節麵的坐標(遊戲彩傾,經過進程convertToNodeSpace)
阿誰轉換格式很常常操做,所以隻需供記取用它便好了。
編譯匝弄代碼,當您觸摸某個小植物的時間,它會遣甬當憊藏一下!

按照觸摸麵去移動細靈戰背景層
遣甬的小植物們躍躍欲試,期待著您把它枚膛到新的位置!那我們借等甚麼呢?根底的念法是真現ccTouchMoved格式,並鉀葡出觸摸麵的位置竄改。假定某個植物被選中,那麼會按照所鉀葡出的位置竄改去拖動小植物。假定出幼懟中某個小植物,那麼局部背景層將會移動。
正在我們進進具體的代碼之前,先吭喲正在Cocos2D中該如何遷移轉變層。起尾吭喲上裏的圖:

正如您所睹,我們已將背景層的錨麵位質荑置正在(0,0),而別的部門將從那邊延少到左邊。烏框代表當前的可睹地區(屏幕的除夜小)。
假定您念背左邊移動100個麵,可以或許直接將局部Cocos2D層背左邊移動100個麵,如上圖所示。
雖然,我們沒有念拖動的過了,可則便會看到空黑地區。
收略了上裏的根底事理,我們可以或許去用代碼真現了!正在HelloWorldLayer.m的上裏增減新的格氏圃下:
-(CGPoint)boundLayerPos:(CGPoint)newPos{
CGSizewinSize=[CCDirectorsharedDirector].winSize;
CGPointretval=newPos;
retval.x= MIN(retval.x, 0);
retval.x= MAX(retval.x,-background.contentSize.width+winSize.width);
retval.y=immolation.position.y;
returnretval;
-(void)panForTranslation:(CGPoint)translation {
if(selSprite){
arrow
arrow
    全站熱搜

    zer931 發表在 痞客邦 留言(0) 人氣()