【问题标题】:Absurd and jerky movement of scene while scrolling滚动时场景的荒谬和生涩的运动
【发布时间】:2011-06-16 04:25:34
【问题描述】:

当场景移动时,它会以一种荒谬且不稳定的方式移动(有时并非总是如此),这会导致刺激。以下代码已用于移动场景:

//NAVIGATION TOWARDS X AND Y WhenEver and how ever you want

            if (abs(diffX) > abs(diffY))    //Scroll in x
            {
                //CCLOG(@"yScrlFlag=%d",yScrlFlag);
                if(diffX > 0)
                {
                    xScrlFlag=1;
                    [self.parent runAction:[CCMoveTo actionWithDuration:round(-(-3112-self.parent.position.x)/950)
                                                               position:ccp((-3112-self.position.x),self.parent.position.y)]];
                    [resetPosition setIsEnabled:YES];
                    [resetPosition runAction:[CCMoveTo actionWithDuration:round(-(-3112-self.parent.position.x)/950) 
                                                                 position:ccp((3112+self.position.x+70),resetPosition.position.y)]];
                    //[self.parent.menuButton setIsEnabled:NO];
                }
                else
                {
                    xScrlFlag=0;                        
                    [self.parent runAction:[CCMoveTo actionWithDuration:(-self.parent.position.x/950) 
                                                               position:ccp(0,self.parent.position.y)]];
                    //[resetPosition setIsEnabled:YES];
                    [resetPosition runAction:[CCMoveTo actionWithDuration:(-self.parent.position.x/950) 
                                                                 position:ccp(141,resetPosition.position.y)]];
                }
            }
            else  //Scroll in y
            {                       
                if(diffY < 0)
                {
                    [resetPosition setIsEnabled:YES];
                    //CCLOG(@"MOVING PARENT BY=%f",(-self.position.y));
                    //CCLOG(@"self.parent.position BEFORE MOVE=(%f, %f)",self.parent.position.x,self.parent.position.y);
                    //CCLOG(@"resetPosition.position BEFORE MOVE=(%f, %f)",resetPosition.position.x,resetPosition.position.y);
                    [self.parent runAction:[CCMoveTo actionWithDuration:(-(-300-self.parent.position.y)/650) 
                                                               position:ccp(self.parent.position.x,(-self.position.y))]];

                    //Working
                    [resetPosition runAction:[CCMoveTo actionWithDuration:(-(-300-self.parent.position.y)/650) 
                                                                 position:ccp(resetPosition.position.x, 280-(-self.position.y))]];

                    //CCLOG(@"self.parent.position AFTER MOVE=(%f, %f)",self.parent.position.x,self.parent.position.y);
                    //CCLOG(@"resetPosition.position BEFORE MOVE=(%f, %f)",resetPosition.position.x,resetPosition.position.y);
                }
                else
                {   
                    //CCLOG(@"yScrlFlag");
                    yScrlFlag=0;
                    [self.parent runAction:[CCMoveTo actionWithDuration:(-(-300-self.parent.position.y)/950) 
                                                               position:ccp(self.parent.position.x,0)]];

                    [resetPosition runAction:[CCMoveTo actionWithDuration:round(-(-300-self.parent.position.y)/949) 
                                                                 position:ccp(resetPosition.position.x,280)]];
                }

            }

我想要的是场景运动中的所有时间平滑度。如代码所示,它在水平和垂直方向移动 scene。当场景中的一个(任何)sprite被调动,场景开始滚动时,就会出现基本问题。在这种情况下,它的行为也很不稳定(可能比正常情况下更严重)。有什么建议吗?

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone box2d


    【解决方案1】:

    尝试 CCFollow 而不是手动执行所有操作:

    CCFollow

    【讨论】:

    • 抱歉回答缓慢。几个小时前我看到了你的评论,但我今天感觉不太好。 CCFollow 非常简单。如果您有一个希望视图保留的精灵,就像这样简单:[self runAction:[CCFollow actionWithTarget:myShipImage]]; 可能还有其他使用它的方法,但这是我使用过的唯一方法。我希望这会有所帮助。
    • 在该代码中,myShipImage 是一个精灵。它有一个连接到它的 box2d 主体,但这没关系。摄影机顺滑地跟了上去。如果您需要 UI 元素以及顶部不会移动或晃动的其他任何东西,请尝试将 CCParallax 节点添加为子节点,并使用 ccp(0.0, 0.0) 的视差比率向其中添加任何 UI 元素(或其他元素)
    • '快点好起来',感谢'任何方式'的回复,我会努力的。
    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多