Как я могу добавить изображение спрайта из набора спрайтов, которые имеют разные свойства для каждого спрайта? - PullRequest
0 голосов
/ 24 марта 2010

В моем приложении один игрок и 10 целей. Каждая цель появляется одна за другой (от цели1 до цели10). Это стрелялка. Если мы поразим первую цель, тогда придет вторая цель. У целей есть такие свойства, как name, speedOfGunDraw, вероятность попадания в игрока, speedOfFire. Что я должен сделать, чтобы они появлялись один за другим с этими свойствами. Я использую CCMenuItem для цели. Я использую спрайт для игрока. Пожалуйста, дайте мне идею сделать это. Спасибо.

1 Ответ

2 голосов
/ 25 марта 2010

Чтобы ответить на ваш вопрос: с Cocos2D ваша сцена создаст спрайтов. Вы можете получить текущую сцену бега и отправить ей сообщение (например, «Я застрелен»). Это можно сделать через директора.

[[CCDirector sharedDirector] runningScene]; // returns a pointer to the running scene
[[[CCDirector sharedDirector] runningScene] someoneShotMe: self]; // will message the scene that you're shot.

В качестве альтернативы, если ваша сцена не управляет вещами, задайте объект, о котором вы хотите быть информированным как делегат, при создании «врага».

Enemy * enemy1 = [[Enemy alloc] init];
[enemy1 setDelegate: self];

// and then from your enemy object, you call a message on the delegate
[self->delegate someoneShotMe: self];

Я думаю, что вы слишком усложняете это, потому что вы там не используете MVC.

Вы не должны создавать подклассы спрайтов, чтобы дать им больше функциональности, чем "просмотр".

Свойства, такие как probabilityToHitPlayer, не влияют непосредственно на представление, поэтому не должны храниться в спрайте.

Создайте новый класс, например Enemy (подкласс NSObject), который содержит спрайт и другие свойства, такие как probabilityToHitPlayer

Затем враг может обрабатывать логику (это контроллер), в то время как Sprite обрабатывает видимые части.

Кроме того, использовать пункты меню, потому что они имеют сенсорное распознавание? Не красиво Вместо этого посмотрите в CCTargetedTouchDelegate.

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