Как правильно реализовать горизонтальную и вертикальную прокрутку в мире box2d? - PullRequest
0 голосов
/ 01 июня 2011

Я реализовал горизонтальную прокрутку, но вертикальная прокрутка создает проблемы, и эту проблему трудно объяснить.Поэтому я могу прокручивать scene по вертикали и по горизонтали, если это было сделано с начала сцены, т.е. ccp (0,0).Но когда прокрутка в направлении X была сделана и была приостановлена ​​в середине, то, если я прокручиваю ее по вертикали, она фактически прокручивается по диагонали, возвращаясь к началу координат (x) и новой позиции y.
Я знаю, что это сложно понять, но как этого добиться, чтобы прокрутить его вертикально из положения, в котором оно было прокручено вниз.

1 Ответ

0 голосов
/ 01 июня 2011

ЕСЛИ КТО-то получил мой вопрос, то вот ответ на него,

//NAVIGATION TOWARDS X AND Y WhenEver and how ever you want         
            if (abs(diffX) > abs(diffY))
            {
                CCLOG(@"yScrlFlag=%d",yScrlFlag);
                if(diffX > 0)
                {
                    xScrlFlag=1;
                    [self.parent runAction:[CCMoveTo actionWithDuration:round(-(-3112-self.parent.position.x)/250) position:ccp((-3112-self.position.x),self.parent.position.y)]];
                }
                else
                {
                    [self.parent runAction:[CCMoveTo actionWithDuration:(-self.parent.position.x/250) position:ccp(0,self.parent.position.y)]];
                    xScrlFlag=0;
                }
            }
            else
            {   
                if (1) 
                {
                    if(diffY < 0)
                    {
                        yScrlFlag=1;
                        //CCLOG(@"\n nodePosition.x=%f \n nodePosition.y=%f",nodePosition.x,nodePosition.y);
                        [self.parent runAction:[CCMoveTo actionWithDuration:(-(-500-self.parent.position.y)/250) position:ccp(self.parent.position.x,(-self.position.y))]];
                    }
                    else
                    {   
                        yScrlFlag=0;
                        [self.parent runAction:[CCMoveTo actionWithDuration:(-(-500-self.parent.position.y)/250) position:ccp(self.parent.position.x,0)]];
                    }   
                    CCLOG(@"yScrlFlag=%d",yScrlFlag);                       
                }
            }
...