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; //把当前点击坐标赋值于前一个坐标
    
    }


  • 相关阅读:
    时间编程
    移动文件流的读写指针---fseek
    Xadmin添加用户小组件出错render() got an unexpected keyword argument 'renderer
    xadmin安装
    Django:Python3.6.2+Django2.0配置MySQL 转载
    gitignore文件不生效
    django图片上传修改图片名称
    python3 提示sqlite模块不存在
    Django-admin列表展示上传图片
    django使用admin站点上传图片
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5251540.html
Copyright © 2011-2022 走看看