我需要在cocos2d中获得触摸移动速度。任何api为此?
答案 0 :(得分:2)
执行此操作的最基本方法是执行以下操作:
当然,将CCLayer
注册为触摸事件处理程序,并实现触摸开始,移动和结束功能。
在相关课程中创建2个CGPoint
个变量,以存储CURRENT
和PREVIOUS
触摸位置。同时创建2个CCTIme
结构来存储CURRENT
和PREVIOUSLY
轮询时间。
设定更新当前时间的时间表(我已在任何相关课程的初始化中完成此操作。
即:
- (id)init {
if((self = [super init])) {
[self schedule:@selector(update:)];
timeCURRENT = (ccTime)0;
}
return self;
}
-(void)update:(ccTime)deltaTime {
timeCURRENT += deltaTime;
}
4。在触摸开始时,使用以下内容将前一个和当前变量都设置为当前触摸位置:
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
touchCURRENT= [touch locationInView: [touch view]];
touchPREVIOUS = touchCURRENT;
timePREVIOUS = timeCURRENT;
...
然后,触摸移动,将PREVIOUS设置为CURRENT,并使用与上面相同的代码行设置CURRENT
-(BOOL)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {
touchPREVIOUS = touchCURRENT;
touchCURRENT= [touch locationInView: [touch view]];
CGPoint deltaPosition = touchCURRENT - touchPREVIOUS;
ccTime deltaTime = timeCURRENT - timePREVIOUS;
timePREVIOUS = timeCURRENT;
速度= deltaPosition / deltaTime。
请注意,CGPoint
减法可能无法像上面所宣传的那样工作,您可能需要减去单个成员并将其提供给CGPoint
工厂方法。