2014-06-30 2 views
0

Я ищу, чтобы вызвать случайный CCPoint от CCArray, а затем удалить эту точку из массива, чтобы он не был вызван снова. Это код, который я использовал:Добавление CCPoint в CCArray

myArray->addObject(pos1); 

Где pos1 является CCPoint и myArray является CCArray. Когда я пишу эту строку, она вызывает ошибку, которая гласит: «Нет жизнеспособного преобразования из cocos2d :: CCPoint to cocos2d :: CCObject *». Я знаю, это означает, что CCPoint не наследует от CCObject, но просто наследование CCObject не помогает. Я также попробовал typginging pos1, но это тоже не работает. Что вы предлагаете мне сделать, чтобы я мог хранить множество точек? Заранее спасибо.

+2

Почему вы не принимаете массив CCPoint [] напрямую и сохраняете некоторые статические точки и выталкиваете случайно CCPoint из него. –

+0

Я не думал об этом. Я вызываю эти точки случайным образом, хотя, и я хочу убедиться, что один элемент (CCPoint) не используется дважды. Как мне это сделать? – user1676682

+0

Да, вы должны взять статический массив CCPoint и вынуть CCPoint из массива, вызывая и очищая значения индекса массива. Таким образом, вы можете не получить тот же самый пункт снова. –

ответ

1

@Shiva Kumar Ganthi комментарии с C-массивами - все хорошо, но я думаю, что использование std::vector было бы лучше. Главным улучшением будет тот факт, что вы всегда можете проверить, сколько элементов имеет vector, и вам не нужно беспокоиться о том, чтобы установить использованный элемент в NULL, а затем проверить его, когда вы берете еще одну случайную позицию (что может доказать опасный с большими массивами, которые имеют много NULL s).

Также полезно узнать о стандартных контейнерах.

О, на боковой ноте: вам не нужно использовать CCPoint *, CCPoint это просто отлично.

Смежные вопросы