zoukankan      html  css  js  c++  java
  • 【梦幻连连连】源代码分析(四)-触摸处理

    转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/24297597

    源代码下载:http://download.csdn.net/detail/oyangyufu/7272177

    四、触摸处理ccTouchEnded()流程
    1、获取触摸屏幕的坐标转换成地图坐标
    2、推断该是否在有效范围、是否为空
    3、播放触摸声音
    4、依据点击坐标获取精灵、并放大1.3倍
    5、依据坐标获取前一个点击的精灵
    6、比較这两精灵能否够连接消除
      是。播放消除声音,清除这两坐标node。隐藏这两精灵
      否,缩小前一个精灵,并有抖动动画
    7、把当前点击坐标赋值于前一个坐标. (前一坐标初始值(-1, -1))


     

    //触摸结束
    void MapLayer::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
    {
    
    
        CCPoint location = CCDirector::sharedDirector()->convertToGL(pTouch->getLocationInView()); //获取触摸屏幕的坐标
    	location = this->convertToNodeSpace(location);
        
        //location=CCPointMake(location.x, location.y-40);
        
        location=this->pointOfView(location);
        
        
          CCLOG("x:%f",location.x);
          CCLOG("y:%f",location.y);
    
        if (this->isValiableNode(location)==false)
        {
            return;
        }
        
        if (this->isEmptyNode(location))
        {
            return;
        }
    
        
    
        SimpleAudioEngine::sharedEngine()->playEffect("12.wav"); //触摸声音
        
        
        
        if (this->isSamePoints(location, prePoint))
        {
            return;
        }
        
        //点击当前精灵
        CCSprite *spritecurrent=(CCSprite *)this->getChildByTag(TAG_START_SPRITE+this->indexFromPoint(location));
        spritecurrent->setScale(1.3); //放大
    
        CCLOG("%d",this->indexFromPoint(location));
        
        if (this->isValiableNode(prePoint))
        {
        
            //前一个精灵
             CCSprite *spritepre=(CCSprite *)this->getChildByTag(TAG_START_SPRITE+this->indexFromPoint(prePoint));
            
            if (this->canClearTwo(prePoint, location)) //比較这两精灵能否够连接消除
            {
                
                SimpleAudioEngine::sharedEngine()->playEffect("4.wav");
    
                this->clearNode(location);
                this->clearNode(prePoint);
                
                
                spritecurrent->setVisible(false);
                spritepre->setVisible(false);
                
                
            }
            else
            {
            
            
                spritepre->setScale(0.9);
                
            
                this->scaleAnimation(spritepre);
            
            }
            
            
            
        }
        
        prePoint=location; //把当前点击坐标赋值于前一个坐标
    
    }


  • 相关阅读:
    python3-while与if
    python3-while与continue
    python3-password在输入密码时隐藏密码
    input与字符串格式化
    for与break的用法
    bochs 2.6.8 常用命令集合
    关于8086中的jmp near ptr原理
    如何学习Python课程
    微信公众号去除密码安全提示
    模块的使用
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5251540.html
Copyright © 2011-2022 走看看