Весь Sprite, не видимый, перемещая одного эльфа

У меня есть 7 эльфов в моей сцене. Все эльфы, добавляют к mutablearray., когда я трогаю одного эльфа, чтобы переместиться, другие эльфы, не видимые после того, как мои прикосновения перемещают метод

вот мой код

if( (self=[super init])) {

sprites=[[NSMutableArray alloc]init];

CCLayer *base=[CCSprite spriteWithFile:@"Base.png"];
base.position=ccp(512,384);
[self addChild:base];

 x=0;
 for(int i=1;i<=7;i++)
 {
    CCSprite *hole=[CCSprite spriteWithFile:@"ball.png"];
    hole.position=ccp(140+x,318);
    hole.tag=i;
 [self addChild:hole];
    hole.visible=YES;
    [sprites addObject:hole];
    x=x+75;
 }

self.isTouchEnabled=YES;

}
return self;
}


My touchesmove method:



-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"count:%i",[sprites count]);
UITouch *touch=[touches anyObject];
CGPoint location=[touch locationInView:[touch view]];
location=[[CCDirector sharedDirector]convertToGL:location];
location=[self convertToNodeSpace:location];

for(CCSprite *s in sprites)
{
s.position=ccp(location.x,location.y);
}
}
1
nl ja de

2 ответы

Ваш код в ccTouchesMoved перемещает всех ваших эльфов в одно единственное местоположение прикосновения, таким образом, вы только видите одного эльфа, в то время как остальные на самом деле сложены внизу.

Если то, чего вы хотите достигнуть, должно просто тянуть эльфов вокруг после касания, необходимо проверить на пересечение между местоположением прикосновения и ограничительной рамкой каждого эльфа в ccTouchBegan. Как только вы образовали петли через и нашли эльфа, который лежит от вашего прикосновения, вы экономите ссылку на него, и в ccTouchMoved, вы переводите положение того эльфа наряду с суммой, перемещенной, так как в прошлый раз ccTouchMoved назвали.

Check out Ray Wenderlich's tutorial: http://www.raywenderlich.com/2343/how-to-drag-and-drop-sprites-with-cocos2d

2
добавлено
+1 для связи, решающей точную проблему.
добавлено автор KK., источник

В вашем ccTouchesMoved метод, вы , перемещающийся замена (1) все ваши эльфы вместе в линиях:

for(CCSprite *s in sprites)
{
    s.position=ccp(location.x,location.y);
}

Кроме того, я думаю, что ваши эльфы - весь тот же самый размер, таким образом, вы неспособны дифференцироваться, является ли это одним эльфом или больше.


В вашем init метод, необходимо предоставить признак каждому эльфу, и затем изменить его признак в ccTouchesMoved метод.

В том методе необходимо знать, какой эльф трогается, и затем действуйте соответственно. Попытайтесь определить прямоугольник вокруг местоположение . Что-то как это.

Вам, возможно, придется сделать что-то для случая когда многократные трогаемые эльфы. Наиболее распространенная вещь сделать состоит в том, чтобы выполнить действия на эльфе наверху ( z ) или решать эльфом признак s.


(1) To move your sprite(s) to some location, you should be using some CCAction, most likely CCMoveTo and in some cases CCMoveBy.

0
добавлено
@Kentoh' s связь ответа готовый ресурс, и в коде в конце страницы.
добавлено автор KK., источник
Я хочу тянуть эльфа, чтобы не переместиться
добавлено автор Satheesh Kannan, источник
можно ли помочь мне с кодом.
добавлено автор Satheesh Kannan, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.