Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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
Iphone CCSprite高效动画_Iphone_Objective C_Cocos2d Iphone - Fatal编程技术网

Iphone CCSprite高效动画

Iphone CCSprite高效动画,iphone,objective-c,cocos2d-iphone,Iphone,Objective C,Cocos2d Iphone,我正在制作3个图像(精灵)的动画,从屏幕外到屏幕中间的右侧。我已经写了下面的代码,但是我想知道是否有更有效的编码方法 -(void) displayMenu { CGSize screenSize = [[CCDirector sharedDirector] winSizeInPixels]; CCSprite* menuItemBottle = [CCSprite spriteWithFile:@"btn_i_have_norm.png"]; menuItemBott

我正在制作3个图像(精灵)的动画,从屏幕外到屏幕中间的右侧。我已经写了下面的代码,但是我想知道是否有更有效的编码方法

-(void) displayMenu
{
    CGSize screenSize = [[CCDirector sharedDirector] winSizeInPixels];

    CCSprite* menuItemBottle = [CCSprite spriteWithFile:@"btn_i_have_norm.png"];
    menuItemBottle.position = ccp((screenSize.width * 2), 600.0f);
    menuItemBottle.contentSize = screenSize;
    menuItemBottle.scale = 1;
    [self addChild:menuItemBottle z:0 tag:4];

    CCSprite* menuItemAdvert = [CCSprite spriteWithFile:@"btn_see-ad_norm.png"];
    menuItemAdvert.position = ccp((screenSize.width * 2), 500.0f);
    menuItemAdvert.contentSize = screenSize;
    menuItemAdvert.scale = 1;
    [self addChild:menuItemAdvert z:0 tag:5];

    CCSprite* menuItemNoBottle = [CCSprite spriteWithFile:@"btn_dont-have_norm.png"];
    menuItemNoBottle.position = ccp((screenSize.width * 2), 400.0f);
    menuItemNoBottle.contentSize = screenSize;
    menuItemNoBottle.scale = 1;
    [self addChild:menuItemNoBottle z:0 tag:6];

    CGPoint newPointBottle = CGPointMake(screenSize.width * 0.5f + 50, 600.0f);
    CCMoveTo *moveBottle = [CCMoveTo actionWithDuration:0.7f position:newPointBottle];
    CCSequence *sequenceBottle = [CCSequence actions:moveBottle, nil];
    [menuItemBottle runAction:sequenceBottle];

    CGPoint newPointAdvert = CGPointMake(screenSize.width * 0.5f + 50, 500.0f);
    CCMoveTo *moveAdvert = [CCMoveTo actionWithDuration:0.7f position:newPointAdvert];
    CCSequence *sequenceAdvert = [CCSequence actions:moveAdvert, nil];
    [menuItemAdvert runAction:sequenceAdvert];

    CGPoint newPointNoBottle = CGPointMake(screenSize.width * 0.5f + 50, 400.0f);
    CCMoveTo *moveNoBottle = [CCMoveTo actionWithDuration:0.7f position:newPointNoBottle];
    CCSequence *sequenceNoBottle = [CCSequence actions:moveNoBottle, nil];
    [menuItemNoBottle runAction:sequenceNoBottle];

}

您应该能够将所有操作简化为一行。第一个最终会是这样的:

[MenuiteBottol运行动作:[CCMoveTo动作持续时间:0.7f位置:ccp(屏幕大小.宽度*0.5f+50600.0f)]

如果您希望在操作之外定义位置,那么您可以继续这样做。仅供参考,CCSequence用于连续运行同一对象上的动作(即,移动动作运行,旋转动作运行)


此外,我不认为您需要将每个图像的比例设置为1,因为我认为它已经设置为1

在更少的代码中高效还是在更快的运行中高效?更少的代码,如果运行得更快,那就太好了!