У меня возникли проблемы с добавлением объектов в мой NSMutableArray для правильной записи (что определенно означает, что они не будут обрабатывать какие-либо правильные функции) с помощью Spritebuilder [версия 1.4.9, из Apple App Store ]. Я создаю несколько объектов, используя один и тот же класс, но каждый новый переопределяет старые объекты, которые существуют. Я думал, что массив поможет сохранить порядок (а затем при столкновении я могу вызвать массив, чтобы проверить, с каким объектом столкнулся), но он просто работает не так - вообще. Вот соответствующий код.Проблемы с взаимодействием NSMutableArray с конфликтами
main.h
@property Coven *coven;
@property Nellie *nellie;
@property NSMutableArray *array;
//Physics, other things
main.m
/Adding other things...
-(void) addCovenMember{
//This function is called on a RANDOM time interval
_array = [[NSMutableArray] alloc]init];
for (i = 0, i < 15, i++){
_coven = (Coven*) [CCBReader load:@"CovenMember"];
[_array addChild:_coven];
}
[_physicNode addChild:_coven];
}
-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair nellie:(Nellie*)nellie coven:(Coven*)coven{
for (_coven in _array){
NSLog(@"%@",_coven.name)
if (CGRectIntersectsRect(_nellie.boundingBox, _coven.boundingBox){
NSLog(@"We're intersecting!");
}
}
шабаша. ч
//Nothing Important Here
Coven.m
-(void)didLoadFromCCB{
self.physicsBody.CollisionType = @"coven";
}
Nellie.h
//Nothing Here
Nellie.m
-(void) didLoadFromCCB{
self.physicsBody.CollisionType = @"nellie";
}
Столкновение входа с каждым столкновением - но только как имя ПОСЛЕДНИЕ _coven
, который будет создан, независимо от того, с чем я сталкиваюсь. Это также означает, что _coven.boundingBox
находится исключительно на последнем члене _coven
, и взаимодействие возникает только тогда, когда я нажимаю новый член, как только он появляется на экране.
Любые идеи? Любая помощь?
Примечание: Это также опубликовано на веб-сайте Spritebuilder - я решил опубликовать его здесь, потому что ответы могут быть немного медленными на этих форумах.
Благодарим вас за предложения, попробовал свои изменения, но по-прежнему та же проблема (добавлена проверка nil, это было блестяще), заменил ',' на ';' и попытался сменить '_coven' на локальный ivar ('Coven * c') - до сих пор нет кубиков. Я решил добавить в него журнал, чтобы узнать, могу ли я понять, что происходит, и я просто понял, что журналы конфликтов (это исходный 'NSLog (@"% @ ", _ coven.name'), регистрирует i # одно и то же имя. Так что, если это 3, он регистрирует '' WitchA' 3 раза - конечно, если WitchA является последним, который был сгенерирован. –
Когда вы меняете переменную цикла на 'c', вы должны заменить использование '_coven' с' c' внутри цикла. Кроме того, я не уверен, почему вы передаете 'Coven', в нем он не используется (он использует' Coven' в массиве) Однако, на основе кода, который вы опубликовали (например, цикла for), в приложении есть потенциально много ошибок, которые могут повлиять на ваш результат. – thelaws
так что цикл сам по себе кажется прекрасным? Или вы говорите, что мой цикл неисправен, и поэтому мое приложение в целом неисправен (не обижен, просто для уточнения) –