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、图形)可能会干扰调度程序,然后尝试以某种方式减轻它们的影响。