Пожалуйста помоги! Создание новых объектов (из массива?) После того, как объект завершит задачу - PullRequest
0 голосов
/ 12 мая 2011

Я пишу приложение для iPhone, и вот общий обзор: объект находится на экране и движется в зависимости от ввода акселерометра - у меня это работает - он перемещается к краю экрана и не уходит = идеально,Теперь я хочу, чтобы этот объект достиг любого из четырех краев экрана, он должен остановиться и остаться на экране, а новый объект должен «появиться» и начать движение из-за ввода акселерометра, так что теперьдва объекта будут на экране, но только 1 движется.В конце концов, по краю может быть построено 20 объектов, но за один раз будет двигаться только один объект.

Так что теперь я получил помощь, необходимую для проверки попадания краев и т. Д., Но сейчас я пытаюсьчтобы поменять способ отображения ящиков на экране.Изначально я помещал изображения на экран через контроллер представления, но теперь я хочу начать с одного прямоугольника в центре, когда он ударяет по краю, он должен остановиться и остаться, и в центре появится новое изображение.и начать движение из-за ускоренного ввода, как описано выше.Так я просто использую массив для извлечения изображений из?Разве я даже не помещаю .png в контроллер представления и должен ли я просто его кодировать?Вот что я пытаюсь сделать с помощью массива:

//In my .h
UIImageView *blocks;
NSString *blockTypes[3];

//In my .m
blockTypes[0] = @"greenBox1.png";
blockTypes[1] = @"greenBox2.png";
blockTypes[2] = @"greenBox3.png";

Заранее спасибо за любую помощь!Помощь до сих пор была отличной!

1 Ответ

0 голосов
/ 12 мая 2011

Вы не должны проверять, равны ли newX и newY значениям 30 и 50. Вы должны проверить, если они меньше 30 и 50 соответственно.

Edit: Я бы сделал это так:

loat newX = [mutableBoxArray lastObject].center.x + (accel.x * 12);
float newY = [mutableBoxArray lastObject].center.y + (accel.y * -12);
if(newX > 30 && newY > 50 && newX < 290 && newY < 430) {
    [[mutableBoxArray lastObject] setCenter: CGPointMake(newX, newY)];
} else {
    MyBox *myBox = [[MyBox alloc] init];
    [mutableBoxArray addObject: myBox];
    [myBox release];
}

Редактировать 2: Добавьте следующее в ваш интерфейсный файл

NSMutableArray *mutableBoxArray;
NSArray *imageNamesArray;

Затем в вашем файле реализации в loadView добавить

mutableBoxArray = [[NSMutableArray alloc] init];
imageNamesArray = [[NSArray alloc] initWithObjects: @"orangeBox1.png", 
                   @"blueBox1.png", @"greenBox1.png", @"pinkBox1.png", nil];

Затем измените вышеуказанный метод на

static NSInteger imageInt = 0;
loat newX = [mutableBoxArray lastObject].center.x + (accel.x * 12);
float newY = [mutableBoxArray lastObject].center.y + (accel.y * -12);
if(newX > 30 && newY > 50 && newX < 290 && newY < 430) {
    [[mutableBoxArray lastObject] setCenter: CGPointMake(newX, newY)];
} else {
    if (imageInt < [imageNamesArray count]) {
        UIImage *image = [UIImage imageNamed: [imageNamesArray objectAtIndex: imageInt++]];
        UIImageView *imageView = [[UIImageView alloc] initWithImage: image];
        [imageView setCenter: CGPointMake(100.0f, 100.0f)];
        [mutableBoxArray addObject: imageView];
        [imageView release];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...