当前位置: 首页>>代码示例>>C++>>正文


C++ CCTouch::getPreviousLocationInView方法代码示例

本文整理汇总了C++中CCTouch::getPreviousLocationInView方法的典型用法代码示例。如果您正苦于以下问题:C++ CCTouch::getPreviousLocationInView方法的具体用法?C++ CCTouch::getPreviousLocationInView怎么用?C++ CCTouch::getPreviousLocationInView使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CCTouch的用法示例。


在下文中一共展示了CCTouch::getPreviousLocationInView方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ccTouchMoved

void CCDrawLineLayer::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
    CCTouch* touch = pTouch;
	
	CCPoint nextPoint = touch->getLocationInView();
	nextPoint = CCDirector::sharedDirector()->convertToGL(nextPoint);
    
    CCPoint preMovePoint = touch->getPreviousLocationInView();
	preMovePoint = CCDirector::sharedDirector()->convertToGL(preMovePoint);
	
	float distance = ccpDistance(nextPoint, preMovePoint);
	if (distance > 1)
	{
		int d = (int)distance;
		for (int i = 0; i < d; i++ )
		{
			float distanceX = nextPoint.x - preMovePoint.x;
			float distanceY = nextPoint.y - preMovePoint.y;
            
			float percent = i / distance;
			CCPoint newPoint;
			newPoint.x = preMovePoint.x + (distanceX * percent);
			newPoint.y = preMovePoint.y + (distanceY * percent); 
			
			m_pointList.push_back(newPoint);
		}
	}
    
    if(m_drawLayerDelegate)
    {
        m_drawLayerDelegate->ccDrawLineLayerTouchMove(this,touch);
    }   

    
}
开发者ID:bingwan,项目名称:Cut2.1.2Classes,代码行数:35,代码来源:CCDrawLineLayer.cpp

示例2: ccTouchesMoved

void HelloWorld::ccTouchesMoved(cocos2d::CCSet *touches, cocos2d::CCEvent *event)
{
    static CCSize s = CCDirector::sharedDirector()->getWinSize();
    CCTouch *touch = (CCTouch*)touches->anyObject();
    CCPoint pt0 = touch->getPreviousLocationInView();
    CCPoint pt1 = touch->getLocationInView();
    
    // Correct Y axis coordinates to cocos2d coordinates
    pt0.y = s.height - pt0.y;
    pt1.y = s.height - pt1.y;
    
    for (int i=0; i < _ropes.size(); ++i) {
        VRope *rope = _ropes[i];
        vector<VStick*> stick = rope->getSticks();
        for (int j=0; j < stick.size(); ++j) {
            VStick *pStick = stick[j];
            CCPoint pa = pStick->getPointA()->getPoint();
            CCPoint pb = pStick->getPointB()->getPoint();
            if (this->checkLineIntersection(pt0, pt1, pa, pb)) {
                //cut the rope here

                b2Body *newBodyA = this->createRopeTipBody();
                b2Body *newbodyB = this->createRopeTipBody();
                
                VRope *newRope = rope->cutRopeInStick(pStick, newBodyA, newbodyB);
                _ropes.push_back(newRope);
                
                SimpleAudioEngine::sharedEngine()->playEffect(kCuttingSound);
                return;
            }
        }
    }
}
开发者ID:4nakin,项目名称:CutTheRope-x,代码行数:33,代码来源:HelloWorldScene.cpp

示例3: xtTouchesMoved

void BattleField::xtTouchesMoved(cocos2d::CCSet *_touches, cocos2d::CCEvent *event) {

    if (_touchedTroop!=NULL) {
        return;
    }
    CCTouch *pTouch = (CCTouch *)_touches->anyObject();
    CCPoint loc = this->convertTouchToNodeSpace(pTouch);
    
    CCPoint prevoiusLoc = pTouch->getPreviousLocationInView();
    
    //屏幕坐标变成GL坐标
    prevoiusLoc = CCDirector::sharedDirector()->convertToGL(prevoiusLoc);
    //然后转成layer相对坐标
    prevoiusLoc = this->convertToNodeSpace(prevoiusLoc);
    
    CCPoint translation = ccpSub(loc, prevoiusLoc);
    CCPoint next = ccpAdd(this->getPosition(), translation);
    
    this->adjustViewBoundingPosition(next);
}
开发者ID:newbdez33,项目名称:march,代码行数:20,代码来源:BattleFieldLayer.cpp

示例4: executeNodeTouchesEvent

int CCLuaEngine::executeNodeTouchesEvent(CCNode* pNode, int eventType, CCSet *pTouches, int phase)
{
    m_stack->clean();
    CCLuaValueDict event;
    switch (eventType)
    {
        case CCTOUCHBEGAN:
            event["name"] = CCLuaValue::stringValue("began");
            break;

        case CCTOUCHMOVED:
            event["name"] = CCLuaValue::stringValue("moved");
            break;

        case CCTOUCHENDED:
            event["name"] = CCLuaValue::stringValue("ended");
            break;

        case CCTOUCHCANCELLED:
            event["name"] = CCLuaValue::stringValue("cancelled");
            break;

        case CCTOUCHADDED:
            event["name"] = CCLuaValue::stringValue("added");
            break;

        case CCTOUCHREMOVED:
            event["name"] = CCLuaValue::stringValue("removed");
            break;

        default:
            return 0;
    }

    event["mode"] = CCLuaValue::intValue(kCCTouchesAllAtOnce);
    switch (phase)
    {
        case NODE_TOUCH_CAPTURING_PHASE:
            event["phase"] = CCLuaValue::stringValue("capturing");
            break;

        case NODE_TOUCH_TARGETING_PHASE:
            event["phase"] = CCLuaValue::stringValue("targeting");
            break;

        default:
            event["phase"] = CCLuaValue::stringValue("unknown");
    }

    CCLuaValueDict points;
    CCDirector* pDirector = CCDirector::sharedDirector();
    char touchId[16];
    for (CCSetIterator touchIt = pTouches->begin(); touchIt != pTouches->end(); ++touchIt)
    {
        CCLuaValueDict point;
        CCTouch* pTouch = (CCTouch*)*touchIt;
        sprintf(touchId, "%d", pTouch->getID());
        point["id"] = CCLuaValue::stringValue(touchId);

        const CCPoint pt = pDirector->convertToGL(pTouch->getLocationInView());
        point["x"] = CCLuaValue::floatValue(pt.x);
        point["y"] = CCLuaValue::floatValue(pt.y);
        const CCPoint prev = pDirector->convertToGL(pTouch->getPreviousLocationInView());
        point["prevX"] = CCLuaValue::floatValue(prev.x);
        point["prevY"] = CCLuaValue::floatValue(prev.y);

        points[touchId] = CCLuaValue::dictValue(point);
    }
    event["points"] = CCLuaValue::dictValue(points);
    m_stack->pushCCLuaValueDict(event);

    int eventInt = (phase == NODE_TOUCH_CAPTURING_PHASE) ? NODE_TOUCH_CAPTURE_EVENT : NODE_TOUCH_EVENT;
    CCArray *listeners = pNode->getAllScriptEventListeners();
    CCScriptHandlePair *p;
    for (int i = listeners->count() - 1; i >= 0; --i)
    {
        p = dynamic_cast<CCScriptHandlePair*>(listeners->objectAtIndex(i));
        if (p->event != eventInt || p->removed) continue;
        m_stack->copyValue(1);
        m_stack->executeFunctionByHandler(p->listener, 1);
        m_stack->settop(1);
    }

    m_stack->clean();
    
    return 1;
}
开发者ID:fordream,项目名称:quick,代码行数:87,代码来源:CCLuaEngine.cpp

示例5: executeNodeTouchesEvent

int CCLuaEngine::executeNodeTouchesEvent(CCNode* pNode, int eventType, CCSet *pTouches, int phase)
{
    CCScriptEventListenersForEvent &listeners = pNode->getScriptEventListenersByEvent(phase == NODE_TOUCH_CAPTURING_PHASE ? NODE_TOUCH_CAPTURE_EVENT : NODE_TOUCH_EVENT);
    if (listeners.size() == 0) return 1;

    m_stack->clean();
    CCLuaValueDict event;
    switch (eventType)
    {
        case CCTOUCHBEGAN:
            event["name"] = CCLuaValue::stringValue("began");
            break;

        case CCTOUCHMOVED:
            event["name"] = CCLuaValue::stringValue("moved");
            break;

        case CCTOUCHENDED:
            event["name"] = CCLuaValue::stringValue("ended");
            break;

        case CCTOUCHCANCELLED:
            event["name"] = CCLuaValue::stringValue("cancelled");
            break;

        default:
            return 0;
    }

    event["mode"] = CCLuaValue::intValue(kCCTouchesAllAtOnce);
    switch (phase)
    {
        case NODE_TOUCH_CAPTURING_PHASE:
            event["phase"] = CCLuaValue::stringValue("capturing");
            break;

        case NODE_TOUCH_TARGETING_PHASE:
            event["phase"] = CCLuaValue::stringValue("targeting");
            break;

        default:
            event["phase"] = CCLuaValue::stringValue("unknown");
    }

    CCLuaValueDict points;
    CCDirector* pDirector = CCDirector::sharedDirector();
    char touchId[16];
    for (CCSetIterator touchIt = pTouches->begin(); touchIt != pTouches->end(); ++touchIt)
    {
        CCLuaValueDict point;
        CCTouch* pTouch = (CCTouch*)*touchIt;
        sprintf(touchId, "%d", pTouch->getID());
        point["id"] = CCLuaValue::stringValue(touchId);

        const CCPoint pt = pDirector->convertToGL(pTouch->getLocationInView());
        point["x"] = CCLuaValue::floatValue(pt.x);
        point["y"] = CCLuaValue::floatValue(pt.y);
        const CCPoint prev = pDirector->convertToGL(pTouch->getPreviousLocationInView());
        point["prevX"] = CCLuaValue::floatValue(prev.x);
        point["prevY"] = CCLuaValue::floatValue(prev.y);

        points[touchId] = CCLuaValue::dictValue(point);
    }
    event["points"] = CCLuaValue::dictValue(points);
    m_stack->pushCCLuaValueDict(event);

    CCScriptEventListenersForEventIterator it = listeners.begin();
    for (; it != listeners.end(); ++it)
    {
        m_stack->copyValue(1);
        m_stack->executeFunctionByHandler((*it).listener, 1);
        m_stack->settop(1);
    }

    m_stack->clean();
    
    return 1;
}
开发者ID:kusukk,项目名称:quick-cocos2d-x,代码行数:78,代码来源:CCLuaEngine.cpp

示例6: ccTouchesMoved

 void CCLayerPanZoom::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)
 {
     _panningOrZooming = true;
     
     if(_panZoomEnabled)
     {
         if(pTouches->count() == 1 && !_dragging)  // Drag the map
         {
             CCTouch* touch = (CCTouch*)(*pTouches->begin());
             CCPoint touchLocation = touch->getLocationInView();
             CCPoint prevLocation = touch->getPreviousLocationInView();
             touchLocation = CCDirector::sharedDirector()->convertToGL( touchLocation );
             prevLocation = CCDirector::sharedDirector()->convertToGL( prevLocation );
             
             CCPoint diff = ccpSub(touchLocation, prevLocation);
             
             move(diff);
             
             //add the diff into the avgInertia
             _avgInertiaDir[_avgIdx] = diff;
             
             ++_avgIdx;
             if(_avgIdx >= NUM_INERTIA_SAMPLES)
                 _avgIdx = 0;
             
             CCTime::gettimeofdayCocos2d(&_lastTouchMoved, NULL);
         }
         else if(pTouches->count() == 2 && _panZoomEnabled) // Pinch zoom in/out
         {
             // Get two touchess to handle the zoom
             CCSetIterator iter = pTouches->begin();
             CCTouch* touchOne = (CCTouch*)(*iter);
             ++iter;
             CCTouch* touchTwo = (CCTouch*)(*iter);
             
             // Get the touches and previous touches locations
             CCPoint touchLocationOne = touchOne->getLocation();
             CCPoint touchLocationTwo = touchTwo->getLocation();
             
             CCPoint previousLocationOne = touchOne->getPreviousLocation();
             CCPoint previousLocationTwo = touchTwo->getPreviousLocation();
             
             // Position the camera to the middle of the pinch
             // Get the middle position of the pinch
             CCPoint pinchCenter = ccpMidpoint(touchLocationOne, touchLocationTwo);
             
             // Calculate new scale
             float newScale = getScale() * ccpDistance(touchLocationOne, touchLocationTwo) / ccpDistance(previousLocationOne, previousLocationTwo);
             
             if(newScale < _minScale) newScale = _minScale;
             else if(newScale > _maxScale) newScale = _maxScale;
             
             // Call the scale method to scale by the distanceDelta from pinchCenter
             scale(newScale, pinchCenter);
             
             // You can move using two fingers (like in Google Maps)
             touchLocationOne = CCDirector::sharedDirector()->convertToGL(touchLocationOne);
             touchLocationTwo = CCDirector::sharedDirector()->convertToGL(touchLocationTwo);
             previousLocationOne = CCDirector::sharedDirector()->convertToGL(previousLocationOne);
             previousLocationTwo = CCDirector::sharedDirector()->convertToGL(previousLocationTwo);
             
             CCPoint touchLocation = ccpMidpoint(touchLocationOne, touchLocationTwo);
             CCPoint prevtouchLocation = ccpMidpoint(previousLocationOne, previousLocationTwo);
             
             CCPoint diff = ccpSub(touchLocation, prevtouchLocation);
             diff.y = -diff.y;
             move(diff);
         }
     }
 }
开发者ID:NStockwell,项目名称:SocialPoint,代码行数:70,代码来源:CCLayerPanZoom.cpp

示例7: mapTouchesMoved

void CentralLayer::mapTouchesMoved(CCSet *pTouches, CCEvent *pEvent)
{
    //CCSize mapSize = CCSizeMake(m_nodeArena->getContentSize().width,m_nodeArena->getContentSize().height);
    CCSize mapSize = CCSizeMake(MAPGLWIDTH,MAPGLHEIGHT);
    switch (pTouches->count())
    {
        case 1:
        {//move
//            CCLog("move--------------------------");
            CCSetIterator it;
            CCTouch* touch = NULL;
            for( it = pTouches->begin(); it != pTouches->end(); it++) 
            {
                touch = (CCTouch*)(*it);
                if(!touch)
                    break;
                
                int iViewID = touch->getID();
                if( iViewID == 0 ){
                    break;
                }
            }
            
            if (touch != NULL) {
                initialDistance = 0.0; 
                finalDistance = 0.0;
                
                
                CCPoint touchLocation = touch->getLocationInView();
                CCPoint prevLocation = touch->getPreviousLocationInView();
                
                touchLocation = CCDirector::sharedDirector()->convertToGL(touchLocation);
                prevLocation = CCDirector::sharedDirector()->convertToGL(prevLocation);
                
                CCPoint diff = ccpSub(touchLocation,prevLocation);
                
                CCPoint currentPos = this->getPosition();
                			
                float tempWidth = mapSize.width*this->getScale();
                float tempWidth_Half = tempWidth/2;
                float tempHeight = mapSize.height*this->getScale();
                float tempHeight_Half =tempHeight/2;
                
                CCSize screenSize = CCDirector::sharedDirector()->getWinSize();
                float result1= tempWidth_Half-screenSize.width/2;
                float result2 = tempHeight_Half-screenSize.height/2;
                
                CCPoint maxSelfPos = ccp(result1,result2);
                
                
                CCPoint minSelfPos;
                
                minSelfPos = ccp(result1-(tempWidth-480),result2-(tempHeight-320));		
                
                if (diff.x >=0) {
                    diff.x = (this->getPositionX()+diff.x)<=maxSelfPos.x?diff.x:(maxSelfPos.x-this->getPositionX()); 
                }
                else {
                    diff.x = (this->getPositionX()+diff.x)>=minSelfPos.x?diff.x:(minSelfPos.x-this->getPositionX());
                }
                
                if (diff.y>=0) {
                    diff.y = (this->getPositionY()+diff.y)<=maxSelfPos.y?diff.y:(maxSelfPos.y-this->getPositionY()); 
                }
                else {
                    diff.y = (this->getPositionY()+diff.y)>=minSelfPos.y?diff.y:(minSelfPos.y-this->getPositionY()); 
                }
                
                this->setPosition(ccpAdd(currentPos, diff));
            }
            
        } break;
        case 3:
        case 4:
        case 5:
        case 2: 
        {//zoom
//            CCLog("zoom--------------------------");
			if ( initialDistance==0) {
                CCSetIterator it;
                CCTouch* touch1 = NULL;
                CCTouch* touch2 = NULL;
                for( it = pTouches->begin(); it != pTouches->end(); it++)
                {
                    CCTouch *touch = (CCTouch*)(*it);
                    if(!touch)
                        break;
                    
                    int iViewID = touch->getID();
                    if( iViewID == 0 ){
                        touch1 = touch;
                    }
                    if (iViewID == 1) {
                        touch2 = touch;
                    }
                }
                
                if (touch1 != NULL && touch2 != NULL) {
                    CCPoint touch1Location = touch1->getLocationInView(); 
                    CCPoint touch2Location = touch2->getLocationInView(); 
//.........这里部分代码省略.........
开发者ID:dq-dq,项目名称:bl-client,代码行数:101,代码来源:CentralMapTouch.cpp


注:本文中的CCTouch::getPreviousLocationInView方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。