触手tv时空召唤唤单点式触屏这么玩

当前位置: &CopyRight2004年-年
游迅网 All Rights Reserved
备案编号:沪ICP备号-9当前位置: & &
& 时空召唤平民玩家怎么玩
时空召唤平民玩家怎么玩
发表时间:
来源:优游网 发布:clay
时空召唤作为一个平民党,一个游戏坑不坑就能决定它的命运,时空猎人说坑吧,其实也就那样,没有一款手游会逼死你充值的,明知道要坑却跳坑,怪我?
首先,玩游戏各有各的心态,有充值霸服装逼的,有随便玩玩的,各种各样!对我来说,游戏只是打发时间,感觉游戏越玩越难的我会找新手游,找到了就卸载,不然继续!
关于时空召唤,我玩了两天,说真的,比目前所有的手游好玩!其它的玩着累,各种抽卡抽魂,各种vIP贵族,就连前段时间闹得火热的十无手游也是坑,还不滚服,内封测玩家是挂了,所有也是很失败!
时空召唤目前来看确实是好游戏,充值只是满英雄皮肤而已,不会带来什么,唯一的就是怕学弄什么副本体力之类,哪些黑的玩家一看就知道是鬼了,
总之呢,那些进来了看到的,最好看看视屏适合不,不要看别人乱黑就放弃,还有,我并不是托或什么,只是看那些叽叽喳喳拿以前的来拼比,但是现在
真的不坑!没有体力限制,没有刷图节奏,只有一群各种坑爹坑队友的小学生↘快来下载去教训一下,气死我了这坑神,操,大手带我!
游戏关键字:
相关阅读:
H5游戏推荐
该游戏暂时没有礼包
热门推荐◆19765人阅读
Cocos2d-X学习(27)
cocos2d-x中的触屏事件分为多点触屏和单点触屏,而多点触屏用到的地方并不是很多,所以先主要记录一下单点触屏的用法和基本原理。
一般经常用到的触屏的情况有两种:一种是Layer统一接收触屏消息,然后由程序根据需要分发给不同位置的精灵;另一种情况是自定义一个可以接收触屏消息的Sprite,比如类似于Button功能的Sprite,这就需要在定义Sprite的时候就要定义好触屏所触发的操作!
下面就两种情况分别记录一下基本用法:
1.Layer接收触屏消息
用法很简单,只需要覆写父类的4个方法(可以根据需要,但是ccTouchBegan()是必须要覆写的,并且其返回值对触屏事件的传递有影响,后面会总结),并在init()方法中将其添加到CCTouchDispacher中,代码如下
class TouchableLayer: public CCLayer
virtual bool init();
LAYER_NODE_FUNC(TouchableLayer);
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);
};在Layer的init()中添加如下代码,这个Layer就可以接收到触屏消息了
CCTouchDispatcher::sharedDispatcher()-&addTargetedDelegate(this, 0, true);
如果想通过这种方式判断具体触摸的Sprite或者区域等信息,就需要自己写判断和分发消息的代码了!
2.自定义可以接收触屏消息的Sprite
这种稍微复杂一些,但是还是比较好理解的,首先要先继承CCSprite或者其父类,以满足精灵形状,位置等信息的要求,另外还需要继承触屏事件委托CCTargetedTouchDelegate,CCTargetedTouchDelegate中定义了接收触屏信息的回调虚函数,而这些虚函数,正是我们需要覆写的部分,代码如下
class TouchableSprite: public CCSprite, public CCTargetedTouchDelegate
TouchableSprite();
virtual ~TouchableSprite();
static TouchableSprite *touchSpriteWithFile(const char *file);
bool initWithFile(const char *file);
virtual void onEnter();
virtual void onExit();
CCRect rect();
bool containsTouchLocation(CCTouch *touch);
virtual bool ccTouchBegan(CCTouch *touch, CCEvent *event);
virtual void ccTouchMoved(CCTouch *touch, CCEvent *event);
virtual void ccTouchEnded(CCTouch *touch, CCEvent *event);
重点在于判断自定义Sprite是否被点击,这时就需要得到精灵所在的矩形了,这时又有两种判断方式
(1)得到触屏所在位置,然后根据精灵所在位置的矩形区域和触屏的点判断是否包含,如果包含,则说明触摸到了Sprite。这里写了一个得到精灵当前所在矩形的方法
CCRect TouchableSprite::rect()
CCSize size = getContentSize();
CCPoint pos = getPosition();
return CCRectMake(pos.x - size.width / 2, pos.y - size.height / 2, size.width, size.height);
}然后在每次点击的时候都需要将当前触屏位置转换为GL坐标的位置,然后和Sprite所在矩形做包含判断
bool TouchableSprite::containsTouchLocation(cocos2d::CCTouch *touch)
CCPoint touchPoint = touch-&locationInView(touch-&view());
touchPoint = CCDirector::sharedDirector()-&convertToGL(touchPoint);
return CCRect::CCRectContainsPoint(rect(), touchPoint);
(2)其实cocos2d为我们提供了一种相对简单的方法,但是原理类似,调用CCNode中定义的convertTouchToNodeSpaceAR()方法,将触屏点转化为相对于结点的相对坐标
(ps:由于默认anchor点是中点,所以每一个Sprite上的相对坐标系是从(-width / 2, -height / 2)为左上角点坐标),所以上面的两个方法需要修改一下
CCRect TouchableSprite::rect()
CCSize size = getTexture()-&getContentSize();
return CCRectMake(-size.width / 2, -size.height / 2, size.width, size.height);
}bool TouchableSprite::containsTouchLocation(cocos2d::CCTouch *touch)
return CCRect::CCRectContainsPoint(rect(), convertTouchToNodeSpaceAR(touch));
3.触屏传递顺序
另外需要主要的是
virtual bool ccTouchBegan(CCTouch *touch, CCEvent *event);方法,其返回值是对此触屏消息有影响的,简单来说,如果返回false,表示不处理ccTouchMoved(),ccTouchEnded(),ccTouchCanceld()方法,而交由后续接收触屏消息的对象处理;如果返回true,表示会处理ccTouchMoved(),ccTouchEnded(),ccTouchCanceld()方法,并且消耗掉此触屏消息。
总结如下:
1.CCLayer 只有一层的情况:
virtual&bool&ccTouchBegan(CCTouch&*pTouch,&CCEvent&*pEvent);
a.返回false,则ccTouchMoved(),ccTouchEnded()不会再接收到消息
b.返回true,则ccTouchMoved(),ccTouchEnded()可以接收到消息
2.CCLayer 有多层的情况:
virtual&bool&ccTouchBegan(CCTouch&*pTouch,&CCEvent&*pEvent);
a.返回false,则本层的ccTouchMoved(),ccTouchEnded()不会再接收到消息,但是本层之下的其它层会接收到消息
b.返回true,则本层的ccTouchMoved(),ccTouchEnded()可以接收到消息,但是本层之下的其它层不能再接收到消息
3.有自定义接收触摸消息的精灵的情况:
virtual&bool&ccTouchBegan(CCTouch&*pTouch,&CCEvent&*pEvent);
a.返回false,则此精灵的ccTouchMoved(),ccTouchEnded()不会再接收到消息,而此精灵所在的层会接收到触摸消息(如果精灵所在层没有设置接收触摸消息,则向下传递)
b.返回true,则此精灵的ccTouchMoved(),ccTouchEnded()会继续接收消息,并消耗此消息(即不再向所在层和其他层传递)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:835089次
积分:7943
积分:7943
排名:第1912名
原创:70篇
转载:23篇
评论:399条
阅读:210117
文章:27篇
阅读:360136
(3)(1)(3)(2)(1)(5)(1)(2)(4)(3)(2)(5)(4)(4)(5)(5)(6)(4)(2)(8)(2)(1)(2)(3)(6)(2)(1)(1)(2)(3)

我要回帖

更多关于 时空召唤电脑版 的文章

 

随机推荐