cocos2d触摸移动速度

时间:2011-03-23 05:49:31

标签: iphone objective-c cocos2d-iphone touch

我需要在cocos2d中获得触摸移动速度。任何api为此?

1 个答案:

答案 0 :(得分:2)

执行此操作的最基本方法是执行以下操作:

  1. 当然,将CCLayer注册为触摸事件处理程序,并实现触摸开始,移动和结束功能。

  2. 在相关课程中创建2个CGPoint个变量,以存储CURRENTPREVIOUS触摸位置。同时创建2个CCTIme结构来存储CURRENTPREVIOUSLY轮询时间。

  3. 设定更新当前时间的时间表(我已在任何相关课程的初始化中完成此操作。

  4. 即:

    - (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工厂方法。