cocos2dx 3.0(多个按钮button执行同一事件的区分)

 1 //
 2 //  ATTGamePoker.hpp
 3 //  MalaGame
 4 //
 5 //  Created by work on 2016/10/18.
 6 //
 7 //
 8
 9 #ifndef ATTGamePoker_hpp
10 #define ATTGamePoker_hpp
11
12 #include <stdio.h>
13 #include <cocos2d.h>
14
15
16 class ATTGamePoker : public cocos2d::Layer
17 {
18
19 private:
20
21     cocos2d::ui::Button * m_btnHold[5];//五个按钮
22     cocos2d::Sprite * m_holdGlitter[5];//发光特效/*按钮点下时出现,松开时消失*/
23
24 public:
25
26     virtual bool init();
27
28     void holdCB(Ref *pSender, cocos2d::ui::Widget::TouchEventType type);//声明点击事件
29
30     CREATE_FUNC(ATTGamePoker);
31
32 };
33
34 #endif /* ATTGamePoker_hpp */
 1 //
 2 //  ATTGamePoker.cpp
 3 //  MalaGame39
 4 //
 5 //  Created by work on 2016/10/18.
 6 //
 7 //
 8
 9 #include "ATTGamePoker.hpp"
10 #include <SimpleAudioEngine.h>
11
12 using namespace cocos2d;
13 using namespace cocos2d::ui;
14
15 bool ATTGamePoker::init()
16 {
17     if (!Layer::init())
18     {
19         return false;
20     }
21
22     for (int i=0; i<5; i++) {
23      auto soundbg=cocos2d::ui::Scale9Sprite::createWithSpriteFrameName("gobang_option_sound_off.png");
24      m_btnHold[i]=ControlButton::create(soundbg);
25         m_btnHold[i] ->setPosition(50*i, 60);
26         m_btnHold[i] -> setEnabled(false);
27         m_btnHold[i]->setTag(i+100);//设置tag值便于区分
28         m_btnHold[i]->addTouchEventListener(CC_CALLBACK_2(ATTMyGameScene::holdCB, this));
29         m_holdGlitter[i] = static_cast<Sprite *>(m_rootNode->getChildByName(StringUtils::format("att_8_glitter_%d",i)));
30         m_holdGlitter[i] ->setPosition(50*i, 60);
31
32         m_holdGlitter[i]->setVisible(false);//设置发光体全部隐藏
33         m_holdGlitter[i]->setTag(i+200);
34     }
35 ;
36
37
38
39
40
41     return true;
42 }
43
44
45 //触摸事件的实现方法
46 void ATTMyGameScene::holdCB(Ref *pSender, cocos2d::ui::Widget::TouchEventType type)//保牌
47 {
48
49     if (type == Widget::TouchEventType::BEGAN)//判断点击类型,按钮按下生效
50     {
51         int tag = ((Button*)pSender)->getTag();//通过点击事件来获取当前按钮的tag值,就是这一句话来区分当前哪个button响应来此次事件
52
53         for (int i=0; i<5; i++) {
54             m_holdGlitter[i]->setVisible(false);
55             if (200+i==tag+100) {//判断通过tag值拿到发光体精灵
56                 m_holdGlitter[i]->setVisible(true);//让其显示
57             }
58         }
59     }
60     else if (type == Widget::TouchEventType::ENDED)//按钮松开时生效
61     {
62
63         for (int i=0; i<5; i++) {
64
65             m_holdGlitter[i]->setVisible(false);//送开时全部隐藏
66
67         }
68     }
69
70
71
72 }
时间: 2024-12-23 14:19:48

cocos2dx 3.0(多个按钮button执行同一事件的区分)的相关文章

ASP.NET 解决在点击Button执行服务器事件之前验证用户输入并阻塞

在网站项目开发时,为了减少用户的错误性的操作,很多时候我们都需要做一些必要的JS验证来提醒用户,比如:"输入的值不符合规则,请重新输入"."提交后无法修改,您确定要继续吗?"友好性的提示. 这时候我们想到了Button有一个客户端的点击事件(OnClientClick),大家知道,ASP.NET 页面ASPX页面被创建的时候会生成 一段代码 <input type="hidden" name="__EVENTTARGET"

asp.net js验证为空j时,不让button执行onclick事件

<script type ="text/javascript" language="javascript">           function checkInput() {                  var strMsg = "";          var userName = document.getElementById("<%=txt_Uer.ClientID%>").value; 

Cocos2d-x 3.0 中使用单点触摸

Cocos2d-x 3.0 中使用单点触摸 尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2712 在游戏中,经常会用到触摸,大部分游戏也是通过触摸控制游戏角色运动的,在Cocos2d-x 3.0中使用了新的触摸机制,Cocos2d-x 3.0中摒弃了Cocos2d-x 2.0中将要触发的事件交给代理(delegate)处理,再通过实现代理里面的onTouchBegan等方法接收事件,最后完成事件的响应,在Cocos2d-x 3.0中只需通过创建一个

.net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器

1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.WebForm使用母版页进行登录时候的验证 //新建一个页面父类 public abstract class BasePage:Page { protected void Page_Load(object sender, EventArgs e) { //1.身份验证的方法 Session if (Se

asp.net中Button按钮点击两次才执行Onclick事件的原因

今天写了一个简单的聊天室,有登录页面和聊天室,当从登录页面跳入到聊天室过后,却发现要点击两次发送按钮才能发送到显示区,然后发送按钮正常运行. 通过不断测试,发现,第一次点击并没有执行点击事件,第二次才执行的点击事件.并且也找到了问题所在.下面用一个简单的小例子来说明: 页面Server_Transfer.aspx: <asp:Button ID="Button1" runat="server" Text="Button" OnClick=&

cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--按钮控制主角Jump&amp;Crouch

这一步当中,我们给PlayScene中 添加两个按钮,让主角Jump and Crouch,按钮功能如下: Jump按钮,按下主角跳起来 Crouch按钮,按下主角下蹲,一直按着一直蹲,松开之后主角才站起来 这里用按钮包含头文件"cocos-ext.h"会遇到一点点问题,后面给出详细解决方法: 首先PlayScene.h中要包含头文件: <span style="font-size:14px;">#include "cocos-ext.h&qu

asp.net 环境下当javascript验证不通过是禁止button按钮执行onclick事件的

把内容过程重要的一些内容段做个记录,下边资料是关于asp.net 环境下当javascript验证不通过是禁止button按钮执行onclick事件的内容. <script type ="text/javascript" language="javascript">function checkInput() { var strMsg = "";var userName = document.getElementById("&

按钮在执行frame动画的时候怎么响应触发事件?

代码中效果(请注意,我并没有点击到按钮,而是点击到按钮的终点frame值处): 对应的代码: // // ViewController.m // TapButton // // Created by YouXianMing on 14/12/7. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ViewController.h" @interface ViewController () @end

17、Cocos2dx 3.0游戏开发找小三之内置的常用层:三剑客LayerColor、LayerGradient、Menu

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30477587 为了方便游戏开发者,Cocos2d-x 内置了 3 种特殊的 Layer: 具体如下所示: LayerColor:一个单纯的实心色块. LayerGradient:一个色块,但可以设置两种颜色的渐变效果. Menu:十分常用的游戏菜单. LayerColor 与 与 LayerGradient 这两个层十分简单,都仅仅包含一个色块. 不同