virtual void                                    registerWithTouchDispatcher(void);
virtual bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);
virtual void ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch,CCEvent *pEvent); virtual void tableCellHighlight(CCTableView* table, CCTableViewCell* cell);
//设置成-1让它的层级降低这样就可以优先被触发
//这样就会先执行touchbegain再执行tableCellHighlight
void CCardlayer::registerWithTouchDispatcher(void)
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -, false);
}
bool CCardlayer::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent)
{
switch (m_eClickTable)
{
case CCardlayer::CARD_TABLE_EQUIP_TAG:
{
if (m_nClickIndex != )
return false;
}
break;
case CCardlayer::CARD_TABLE_GENERAL_TAG:
{
if (m_nClickIndex != )
return false;
}
break;
case CCardlayer::CARD_TABLE_TRAP_TAG:
{
if (m_nClickIndex != )
return false;
}
break;
default:
break;
} m_pTouchLocation = pTouch; //设置该函数优先触发主要是为了获取到这个变量 return true;
}
void CCardlayer::tableCellHighlight(CCTableView* table, CCTableViewCell* cell)
{
m_tPos = cell->convertTouchToNodeSpace(m_pTouchLocation);
for (int i = ; i < ; ++i)
{
CCSprite* pFrame = (CCSprite*)cell->getChildByTag(CARD_CELL_BTN_LEFT_TAG + i);
CC_ERROR(pFrame, "【CCardlayer::tableCellHighlight】 pFrame 为空");
if(pFrame->boundingBox().containsPoint(m_tPos))
{
UINT unIndex = cell->getIdx();
m_nMoveIdx = unIndex * RIGHT_CELL_BTN_AMOUNT + i;
this->LoadMove();
return;
}
}
}
void CCardlayer::LoadMove()
{
std::string g_ImgPath(CGlobalMgr::GetInstance()->GetResourcesEx());
std::string strPath;
const Item_Info* pInfo = NULL;
const CEudemon* pEudemon = NULL; CCSprite* pImgMove = NULL; switch (m_eClickTable)
{
case CCardlayer::CARD_TABLE_EQUIP_TAG:
{
pInfo = m_pPackageMgr->QueryEquipById(m_nMoveIdx);
CC_ERROR(pInfo, "【CCardlayer::LoadMove】pInfo 为空")
CCString* pStrImgMove = CCString::createWithFormat("%d", pInfo->nImageIdx);
CC_ERROR(pStrImgMove, "【CCardlayer::LoadMove】pStrImgMove 为空")
strPath = g_ImgPath + pStrImgMove->getCString() + ".png";
pImgMove = CCSprite::create(strPath.c_str());
}
break;
case CCardlayer::CARD_TABLE_GENERAL_TAG:
{
pEudemon = m_pCardMgr->QueryEudemonByIndex(m_nMoveIdx);
CC_ERROR(pEudemon, "【CCardlayer::LoadMove】pEudemon 为空")
CCString* pStrImgMove = CCString::createWithFormat("%d", pEudemon->GetLookFace());
CC_ERROR(pStrImgMove, "【CCardlayer::LoadMove】pStrImgMove 为空")
strPath = g_ImgPath + pStrImgMove->getCString() + ".png";
pImgMove = CCSprite::create(strPath.c_str());
}
break;
case CCardlayer::CARD_TABLE_TRAP_TAG:
{
pInfo = m_pPackageMgr->QueryEquipById(m_nMoveIdx);
CCString* pStrImgMove = CCString::createWithFormat("%d", pInfo->nImageIdx);
CC_ERROR(pStrImgMove, "【CCardlayer::LoadMove】pStrImgMove 为空")
strPath = g_ImgPath + pStrImgMove->getCString() + ".png";
pImgMove = CCSprite::create(strPath.c_str());
}
break;
default:
break;
}
CC_ERROR(pImgMove, "【CCardlayer::LoadMove】pImgMove 为空")
pImgMove->setPosition(m_tPos);
pImgMove->setAnchorPoint(ccp(0.5, 0.5));
pImgMove->setVisible(false);
pImgMove->setTag(CARD_IMG_MOVE_TAG);
this->addChild(pImgMove);
}
void CCardlayer::ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent)
{
CCSprite* pImgMove = (CCSprite*)this->getChildByTag(CARD_IMG_MOVE_TAG);
CC_ERROR(pImgMove, "【CCardlayer::ccTouchMoved】pImgMove为空")
pImgMove->setVisible(true);
pImgMove->setPosition(pTouch->getLocation());
} void CCardlayer::ccTouchEnded(CCTouch *pTouch,CCEvent *pEvent)
{
CCPoint tPos = pTouch->getLocation();
if ((tPos.x >= RIGHT_RECT_START_X && tPos.x <= RIGHT_RECT_START_X + RIGHT_RECT_WIDTH)
&& (tPos.y >= RIGHT_RECT_START_Y && tPos.y <= RIGHT_RECT_START_Y + RIGHT_RECT_HEIGH))
{ } this->removeChildByTag(CARD_IMG_MOVE_TAG);
}

从tableview中拖动某个精灵的更多相关文章

  1. Tableview中Dynamic Prototypes动态表的使用

    Tableview时IOS中应用非常广泛的控件,当需要动态的添加多条不同的数据时,需要用动态表来实现,下面给出一个小例子,适用于不确定Section的数目,并且每个Section中的行数也不同的情况, ...

  2. 关于tableView中tableHeaderView/tableFooterView/sectionHeader/sectionFooter/contentInset的理解

    其实每个人的理解有所不同,找到最有利于自己的理解方式即可.有人把Cell,tableHeaderView,tableFooterView,sectionHeader,sectionFooter这些属性 ...

  3. ubuntu 工作区中拖动一个窗体到另一个工作区就卡住回不到桌面了

    ubuntu 工作区中拖动一个窗体到另一个工作区就卡住回不到桌面了 解决方法: 按 alt + 回车  键直接就返回去了

  4. TableView 中cell间的分割线(及其他控件间(内)的分割线)设置

    知识点: 1.在应用开发中,tableView中自带的分割线满足不了开发需求: 2.一些子空间中添加一些类似于分割线一样的东西等······ 补充知识点:导航条左侧或右侧的控件尽量靠近屏幕边缘设置 需 ...

  5. 关于TableView中出现deallocated问题

    Message sent to deallocated instance 关于的ios 开发中 deallocated问题,相信大家遇到了不少了: 关于怎么查找解决这个问题,特别是当问题在tableV ...

  6. iOS中关于动态Tableview中的cell数据传输的多线程问题解决之拙见

    iOS中关于动态Tableview中的cell数据传输的多线程问题解决之拙见 (2015-12-05 12:48:20)[编辑][删除] 转载▼     首先我们先明确一下问题: 1.因为UI是在主线 ...

  7. 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放

    在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...

  8. 如何在Cocos2D 1.0 中掩饰一个精灵(一)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原帖来自Ray Wunderlich写的精彩的文章 How To ...

  9. tableview中头部信息

    //创建tableview中头部的文件#define kPadding 10 #define kIconWidth 100 #define kIconHeight 100 #define kCount ...

随机推荐

  1. LevelDB和ForestDB简单性能测试(含代码)

    测试环境简单说明 Windows下测试 硬件环境如下: 处理器:Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz 内 存:8GB 硬 盘:希捷 ST1000DM003 操 ...

  2. 图解Win7如何手动添加受信任证书

    点击开始—>运行,如下图所示:   弹出“控制台”窗口如下,如下图所示:   点击“文件—添加/删除管理单元”,如下图所示:   选择“证书”,并点击“添加”,如下图所示:   在弹出的窗口上选 ...

  3. 对TCP连接被重置解决方案的探究

    分类: 网络与安全 对TCP连接被重置解决方案的探究——跨过GFW通向自由网络的可行途径 2010年05月25日 星期二 上午 00:19 这个标题有点长——其实开始只想写破折号之前的部分,因为这种技 ...

  4. Linux环境变量加载顺序

    01.环境变量文件描述 /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置./etc ...

  5. yum安装nodejs 8

    Install Node.js 8 on Enterprise Linux Distributions To install Node.js 8 on Enterprise Linux distros ...

  6. SpringBoot开发项目,引入JPA找不到findOne方法

    写在前面 开发SpringBoot的DAO层之后,去测试的时候,发现findOne()这个方法找不到了,查看了对应的表字段名和实体类的属性都一致 网上有通过降低版本解决的, 方式太牵强. 还有一种方式 ...

  7. hihocoder第233周

    题目链接 题目描述 给定一个数组a[N],N小于1e5.把数组划分成若干个片段,每个片段的和都不为0,问有多少种划分方法? 方法描述 定义f(i)表示0~i共有多少种划分方式,则$f(j)=\sum_ ...

  8. [转]VUE优秀UI组件库合集

    原文链接 随着SPA.前后端分离的技术架构在业界越来越流行,前端的业务复杂度也越来越高,导致前端开发者需要管理的内容,承担的职责越来越多,这一切,使得业界对前端开发方案的思考多了很多,以react.v ...

  9. mysql--SQL编程(关于mysql中的日期,关于重叠) 学习笔记2.2

    1.日期中的重叠问题建表sessions: CREATE TABLE `sessions` ( `id` ) NOT NULL AUTO_INCREMENT, `app` ) NOT NULL, `u ...

  10. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...