Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 滚动图像不是平展移动吗?_Objective C_Cocos2d Iphone - Fatal编程技术网

Objective c 滚动图像不是平展移动吗?

Objective c 滚动图像不是平展移动吗?,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,我使用这个简单的代码来滚动背景 back1=[CCSprite spriteWithSpriteFrameName:@"back1.jpg"]; back2=[CCSprite spriteWithSpriteFrameName:@"back2.jpg"]; CGSize size = [[CCDirector sharedDirector] winSize]; back1.position = ccp(size.width/2, size.he

我使用这个简单的代码来滚动背景

back1=[CCSprite spriteWithSpriteFrameName:@"back1.jpg"];
        back2=[CCSprite spriteWithSpriteFrameName:@"back2.jpg"];

        CGSize size = [[CCDirector sharedDirector] winSize];
        back1.position = ccp(size.width/2, size.height/2);
        back2.position = ccp(size.width/2, (size.height/2)*3);

         [self schedule:@selector(scroll:)];

        [spriteNode addChild:back1];
        [spriteNode addChild:back2];
//方法

-(void)scroll:(ccTime)dt
{
    CGSize size = [[CCDirector sharedDirector] winSize];
    back1.position = ccp( back1.position.x  , back1.position.y - 99*dt );
    back2.position = ccp( back2.position.x  , back2.position.y - 99*dt );

    if (back1.position.y < -size.height/2) 
    {
        back1.position = ccp(size.width/2, -5+(size.height/2)*3);
    }
    else if (back2.position.y < -size.height/2)
    {
        back2.position = ccp(size.width/2, -5+(size.height/2)*3);
    }


}
-(void)滚动:(ccTime)dt
{
CGSize size=[[CCDirector sharedDirector]winSize];
back1.position=ccp(back1.position.x,back1.position.y-99*dt);
back2.position=ccp(back2.position.x,back2.position.y-99*dt);
if(背面1.位置y<-尺寸高度/2)
{
背1.位置=ccp(尺寸.宽度/2,-5+(尺寸.高度/2)*3);
}
否则如果(背面2.位置y<-尺寸.高度/2)
{
背2.位置=ccp(尺寸.宽度/2,-5+(尺寸.高度/2)*3);
}
}
它确实起作用,但它看起来并不自然,它不是连续移动的——如果你仔细观察,你会发现它有时会像弹拨一样。 似乎fps的性能因此而下降

这种方法是“专业的”?推荐什么?还是平行滚动更好? 我怎样才能使动作变得“平缓”,看起来又好又自然


谢谢。

我使用操作来实现这一点,请使用我用于类似于您需要的代码查看以下帖子。是一个旧的代码,我相信有更好的方法可以做到这一点,但它是有效的


在您的日程安排中指定一个时间间隔,看看您是否能够达到以合理的稳定状态调用选择器的条件:

[self schedule:@selector(scroll:) interval:.05f];

在理想情况下,每秒可以移动20次。将dt记录下来,看看它是否恒定。

非常感谢,但我已经尝试过采取行动。同样的事情。它看起来不是真的,有时有点像弹。谢谢我照你说的做了,它看起来更好,但dt是0.6/0.8/0.5,不是常数。这意味着什么,这种方法对性能有好处?或者我应该用其他的方法吗?我很难给你一个好的答案。。。在我的一个游戏中,获得足够稳定的时间基础是一个真正的挑战,在不同的线程中进行太多的事情有时会耗尽我的“时间表”。正如我所说的,您必须对它进行实验,找出哪些资源密集型(cpu、图形)可能会干扰调度程序,然后尝试以某种方式减轻它们的影响。