iPhone: странное движение двух "спрайтов" UIImageView - PullRequest
0 голосов
/ 03 апреля 2010

У меня есть два UIImageViews, движущиеся как спрайты на суперпредставлении. Каждое изображение отображается правильно, но когда я одновременно помещаю оба изображения в суперпредставление, их индивидуальное движение странным образом ограничивается двумя различными областями экрана. Они не будут касаться даже запрограммированных на те же координаты.

Это мой код движения для первого изображения:

- (void)viewDidLoad {
    [super viewDidLoad];    
    pos = CGPointMake(14.0, 7.0);
    [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
- (void) onTimer {
    pallone.center = CGPointMake(pallone.center.x+pos.x, pallone.center.y+pos.y);

    if(pallone.center.x > 320 || pallone.center.x < 0)
        pos.x = -pos.x;
    if(pallone.center.y > 480 || pallone.center.y < 0)
        pos.y = -pos.y;
}

и для второго просмотра изображения:

- (IBAction)spara{
    cos = CGPointMake(8.0, 4.0);
    [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(inTimer) userInfo:nil repeats:YES];
}
- (void)inTimer{
    bomba.center = CGPointMake(bomba.center.x+pos.x, bomba.center.y+pos.y);

    if(bomba.center.x > 50 || bomba.center.x < 0)
        pos.x = -pos.x;
    if(bomba.center.y > 480 || bomba.center.y < 0)
        pos.y = -pos.y;
}

Почему это странное поведение?

Спасибо за вашу помощь. Я новичок.

1 Ответ

0 голосов
/ 03 апреля 2010

Похоже, что pos является переменной экземпляра класса, который содержит эти методы.

Ваша проблема в том, что вы используете одинаковые переменные pos.x и pos.y для обоих изображений. Когда один метод таймера меняет pos.x или pos.y на pallone, это влияет на движение bomba и наоборот.

То, как вы справляетесь с этим, заключается в создании подкласса UIImageView, который содержит логику перемещения. Каждый imageView будет перемещаться и поддерживать свои собственные данные о положении. Таким образом, все остается разделенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...