سؤال

أواجه بعض المشكلات في إعداد اللمسات للتمرير لأعلى لتنفيذ أحد الإجراءات.أحاول استخدام الكود أدناه، لكنه لن يتعرف على اللمسات.

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *allTouches = [event allTouches];
UITouch * touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];

//Swipe Detection Part 1
firstTouch = location;

    CCLOG(@"touched");
}

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *allTouches = [event allTouches];
UITouch * touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];


//Swipe Detection Part 2
lastTouch = location;

//Minimum length of the swipe
float swipeLength = ccpDistance(firstTouch, lastTouch);


CCActionJumpTo *jump1 = [CCActionJumpTo actionWithDuration:2 position:ccp(self.contentSize.width*.4,self.contentSize.height*.1) height:self.contentSize.height*.5 jumps:1];
[_fufunaken runAction:[CCActionRepeat actionWithAction:jump1 times:1]];


//Check if the swipe is an up swipe and long enough
if (firstTouch.y > lastTouch.y && swipeLength > 60) {
    [_fufunaken runAction:[CCActionRepeatForever actionWithAction:jump1]];
}

}

إنها لا تقول حتى "تم اللمس" عندما ألمس الشاشة ولدي تفاعلات المستخدم ممكّنة في الحرف الأول.سيتم تقدير أي مساعدة!

هل كانت مفيدة؟

المحلول

في cocos2d v3 تحتاج إلى استبدال الكل ccTouchesBegan/ccTouchesMoved/ccTouchesEnded ل

-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
-(void) touchMoved:(UITouch *)touch withEvent:(UIEvent *)event
-(void) touchEnded:(UITouch *)touch withEvent:(UIEvent *)event

والخبر السار هو أنه يمكنك الحصول على الموقع الحالي للمس ببساطة عن طريق استخدام السطر التالي

CGPoint touchPos = [touch locationInNode:self];

لذلك، كل هذا غير مطلوب

/*
NSSet *allTouches = [event allTouches];
UITouch * touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
*/
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top