ControlButton按钮事件

#ifndef __HControlButton_H__
#define __HControlButton_H__
#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;
//用于标识当前按钮的状态
typedef enum{
    touch_begin,
    touch_down,
    touch_up,
}tagForTouch;
class HControlButton :public CCNode
{
public:
    HControlButton();
    ~HControlButton();
    CREATE_FUNC(HControlButton);
    //创建按钮,其中name_png为按钮的背景图片,button_title为按钮图片上要显示的文字,num为文字的透明度0-100,0为透明
    void CreateButton(const char* name_png,const char* button_title="0",unsigned int num=0);
    //绑写按钮事件
    void BindButtonEven();
    /* 当鼠标处于按下并曾经点中按钮时,则触发一次 */
    void touchDownAction(Ref *sender, Control::EventType controlEvent);
    /* 当鼠标处于按下并曾经点中按钮的状态下,鼠标进入按钮范围,则触发一次 */  
    void touchDragEnterAction(Ref *sender, Control::EventType controlEvent);
    /* 当鼠标处于按下并曾经点中按钮的状态下,鼠标离开按钮范围,则触发一次 */  
    void touchDragExitAction(Ref *sender, Control::EventType controlEvent);
    /* 当鼠标处于按下并曾经点中按钮的状态下,鼠标进入按钮范围,则触发,只要达到条件,就不断触发 */  
    void touchDragInsideAction(Ref *sender, Control::EventType controlEvent);
    /* 当鼠标处于按下并曾经点中按钮的状态下,鼠标离开按钮范围,则触发,只要达到条件,就不断触发 */
    void touchDragOutsideAction(Ref *sender, Control::EventType controlEvent);  
    /* 当鼠标处于按下并曾经点中按钮的状态下,鼠标松开且在按钮范围内,则触发一次 */
    void touchUpInsideAction(Ref *sender, Control::EventType controlEvent);
    /* 当鼠标处于按下并曾经点中按钮的状态下,鼠标松开且在按钮范围外,则触发一次 */  
    void touchUpOutsideAction(Ref *sender, Control::EventType controlEvent);
    /* 暂时没有发现能用鼠标触发这个事件的操作,看了注释,应该是由其它事件中断按钮事件而触发的 */
    void touchCancelAction(Ref *sender, Control::EventType controlEvent);
    //是否按下按钮
    bool isTouch;
private:
    //按钮控件变量
    ControlButton* controlBtn;
};
#endif
//******************************************************

#include "HControlButton.h"
HControlButton::HControlButton():controlBtn(NULL),isTouch(false)
{
}
HControlButton::~HControlButton()
{

}
void HControlButton::CreateButton(const char* name_png,const char* button_title,unsigned int num)
{
    
    //*************************************

// Add the button
    auto backgroundButton = Scale9Sprite::create(name_png);
    //得到按钮图片的大小
    int  png_height=static_cast<int>(backgroundButton->getContentSize().height);
    int  png_width=static_cast<int>( backgroundButton->getContentSize().width);
    auto backgroundHighlightedButton = Scale9Sprite::create(name_png);

auto titleButton = Label::createWithTTF("", "fonts/Marker Felt.ttf", 30);

//titleButton->setColor(Color3B(159, 168, 176));

//创建按钮
    controlBtn = ControlButton::create(titleButton,backgroundButton);
    //要显示的图片大小
    controlBtn->setPreferredSize(Size(png_width,png_height));
    this->addChild(controlBtn);
    //绑定事件
    BindButtonEven();

}
void HControlButton::BindButtonEven()
{
    if(!controlBtn)
        return;
    // Sets up event handlers
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchDownAction), Control::EventType::TOUCH_DOWN);
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchDragInsideAction), Control::EventType::DRAG_INSIDE);
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchDragOutsideAction), Control::EventType::DRAG_OUTSIDE);
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchDragEnterAction), Control::EventType::DRAG_ENTER);
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchDragExitAction), Control::EventType::DRAG_EXIT);
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchUpInsideAction), Control::EventType::TOUCH_UP_INSIDE);
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchUpOutsideAction), Control::EventType::TOUCH_UP_OUTSIDE);
    controlBtn->addTargetWithActionForControlEvents(this, cccontrol_selector(HControlButton::touchCancelAction), Control::EventType::TOUCH_CANCEL);
}
/* 当鼠标处于按下并曾经点中按钮时,则触发一次 */  
void HControlButton::touchDownAction(CCObject* pSender, Control::EventType controlEvent)
{
    isTouch=true;
    log("touchDownAction");
}
/* 当鼠标处于按下并曾经点中按钮的状态下,鼠标进入按钮范围,则触发一次 */  
void HControlButton::touchDragEnterAction(CCObject* pSender, Control::EventType controlEvent)
{

}
/* 当鼠标处于按下并曾经点中按钮的状态下,鼠标离开按钮范围,则触发一次 */  
void HControlButton::touchDragExitAction(CCObject* pSender, Control::EventType controlEvent)
{

}
/* 当鼠标处于按下并曾经点中按钮的状态下,鼠标进入按钮范围,则触发,只要达到条件,就不断触发 */  
void HControlButton::touchDragInsideAction(CCObject* pSender, Control::EventType controlEvent)
{

}
/* 当鼠标处于按下并曾经点中按钮的状态下,鼠标离开按钮范围,则触发,只要达到条件,就不断触发 */  
void HControlButton::touchDragOutsideAction(CCObject* pSender, Control::EventType controlEvent)
{

}
/* 当鼠标处于按下并曾经点中按钮的状态下,鼠标松开且在按钮范围内,则触发一次 */  
void HControlButton::touchUpInsideAction(CCObject* pSender, Control::EventType controlEvent)
{
    isTouch=false;

}

/* 当鼠标处于按下并曾经点中按钮的状态下,鼠标松开且在按钮范围外,则触发一次 */  
void HControlButton::touchUpOutsideAction(CCObject* pSender, Control::EventType controlEvent)
{

}
/* 暂时没有发现能用鼠标触发这个事件的操作,看了注释,应该是由其它事件中断按钮事件而触发的 */
void HControlButton::touchCancelAction(CCObject* pSender, Control::EventType controlEvent)
{

}

				
时间: 2024-10-01 04:09:49

ControlButton按钮事件的相关文章

IDA学习笔记--VS2008按钮事件捕捉

http://blog.csdn.net/ccnyou/article/details/8521611 IDA笔记--VS2008按钮事件捕捉 用到工具: IDA Proc C32Asm Rescope VS2008 LordPE 实例程序:MFCDemo.exe(附下载链接),我们目标是找到Button1对应的函数的地址处 附件包含:博客文章原文文档,文章中用到的MFCDemo程序. 下载链接:http://download.csdn.net/detail/ccnyou/5012040 1,首

iOS代码实现:创建按钮,绑定按钮事件,读取控件值

// // main.m // Hello // // Created by lishujun on 14-8-28. // Copyright (c) 2014年 lishujun. All rights reserved. // #import <UIKit/UIKit.h> // 视图控制器对象 @interface HelloWorldViewController : UIViewController @property (nonatomic, retain) IBOutlet UIT

android开发步步为营之22:处理Activity中的back按钮事件

在手机应用中,用户点击回退按钮一般是返回上个页面,一般页面不用处理,如果在首页,点回退,没任何提示,就把应用给关了,这个用户体验就不太好了,所以一般都会给用户一个确认的提示:是否退出?免得用户误操作. 一. Activity 中处理 @Override public boolean onKeyDown( int keyCode, KeyEvent event) { // TODO Auto-generated method stub Toast.makeText( this , "onkeydo

安卓之页面跳转与传值和按钮事件

一:新建页面 即新建Activity,new-other-Android Activity,next, 新建Activity的时候, 1:eclipse会自动创建Layout,我们发现Layout目录下会多了对应的xml文件: 2:ec会自动在AndroidManifest.xml中创建对应的activity节点: 需要注意的是,这些都是ec帮我们自动创建的,我们完全可以手动创建 class,然后让它继承自activity,然后指定layout的那个xml,然后手动创建节点完成. 二:点击按钮进

Ugui按钮事件添加方法

按钮事件添加方法3个例子 Eg1: using UnityEngine; using System.Collections; using UnityEngine.Events;//引用事件命名空间 using UnityEngine.UI;//引用UI命名空间 public class Test : MonoBehaviour { // Use this for initialization void Start () { //定义Action,并赋予delegate方法 UnityAction

MVC中使用内建的HTML辅助方法产生表单元素提交表单与button按钮事件的陷阱

网站模板页有个登陆的退出按钮,当点击时跳转到登陆页面. <button onclick="logout()" >退出</button> $("#logOut").click(function () { location.href = "@Url.Action("Logout", "Account")"; }); 然后再某个页面楼主用了HTML辅助方法产生表单元素,代码如下所示: @H

导航栏切换按钮事件

同事写的一段代码,不是很难,但感觉不错保存起来 // 导航栏切换按钮事件 $('ul.main-tab>li').on('mousedown', function() { var $this = $(this), $box = $('.main-tab-content'), i = $this.index(); if ($this.hasClass('on')) { return false; } switch (i) { case 0: break; case 1: updateRadarTa

.Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化

原文:.Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化 我们知道资源被注册到R.java我们通过R.java就可以读取到界面中的组件.跟我们.net一样,通过ID来读取组件 知识点: 通过R.java读取组件 MainActivity.java通过findViewById方法查找组件 在Layout中用@string查找字符串,这个跟我们MVC中国际化基本相识,通过xml这种资源引用进行中文和英文切换 加入中文和英文本地化 双击fragment_main.xml设计视图

Java Hello World例子和添加按钮事件与功能

新建android工程,然后默认“下一步”即可完成创建: 2.添加Button 3.在src的MainActivity.java添加以下红色代码 import android.support.v7.app.ActionBarActivity;import android.support.v7.app.ActionBar;import android.support.v4.app.Fragment;import android.content.Intent;import android.os.Bu