2

我目前对一个我似乎无法找到答案的问题感到沮丧。我有一个由用户控制的 UIImageView,根据他们按下的方向向左或向右移动 20 个像素。同时,我正在尝试使用带有不同按钮的 NSArray 对其进行动画处理。但是,每次我为 UIImageView 设置动画时,位置都会重置。

例如,我将它向右移动 80 像素,一旦按下动画按钮,它就会回到动画前的原始位置。这是非常令人愤怒的。这是我的代码:

('pos' 是一个设置为 (20,0) 像素的 CGPoint)

-(IBAction)moveleft {

    player.center = CGPointMake(player.center.x-pos.x,player.center.y+pos.y);
}


-(IBAction)moveright {

    player.center = CGPointMake(player.center.x+pos.x,player.center.y+pos.y);
}



-(IBAction)animove {

isMove = TRUE;

    player.animationImages = [NSArray arrayWithObjects:

                              [UIImage imageNamed:@"move0002.png"],
                              [UIImage imageNamed:@"move0003.png"],
                              [UIImage imageNamed:@"move0004.png"],
                              [UIImage imageNamed:@"move0005.png"],
                              [UIImage imageNamed:@"move0006.png"],
                              [UIImage imageNamed:@"move0007.png"],
                              [UIImage imageNamed:@"move0008.png"],
                              [UIImage imageNamed:@"move0009.png"],
                              [UIImage imageNamed:@"move0010.png"], nil];



    player.animationDuration = 0.35;
    player.animationRepeatCount = 1;
    [player startAnimating];



}

总而言之,两者都-(IBAction)moveleft可以-(IBAction)moveright正常工作

-(IBAction)animove,但一旦animove被执行,UIImageViewplayer会在进行左右移动之前移回其原始位置。

任何帮助/建议将不胜感激。

4

3 回答 3

3

尽管这是一个非常古老的问题,但我遇到了同样的问题并找到了答案:UnCheck AutoLayout。

如何做到这一点:http ://www.raywenderlich.com/17811/how-to-make-a-simple-mac-app-on-os-x-10-7-tutorial-part-13/smat-disable -自动布局

祝任何像我一样偶然发现这一点的人好运。

于 2014-10-08T22:37:34.733 回答
0

尝试在移动对象时记住位置,而不是在点击动画按钮时重置它。

-(IBAction)moveleft {
    rememberPosition = CGPointMake(player.center.x-pos.x,player.center.y+pos.y);
    player.center = rememberPosition; 
}

-(IBAction)moveright {
    rememberPosition = CGPointMake(player.center.x+pos.x,player.center.y+pos.y);
    player.center = rememberPosition;
}

-(IBAction)animove {
    player.center = rememberPosition;
    player.animationImages = [NSArray arrayWithObjects: ...];
    player.animationDuration = 0.35;
    player.animationRepeatCount = 1;
    [player startAnimating];
}
于 2013-03-15T09:20:17.580 回答
0

我不知道你为什么会有这种行为......

我在这里检查了你的代码https://dl.dropbox.com/u/19438780/testAnim.zip

接缝没问题。

于 2013-03-15T09:02:52.060 回答