COCOS CREATOR(TS)之按钮事件
一 : 前景介绍
为cc.Button添加事件的方法有很多种 , 本篇只讲解使用cc.Component.EventHandler的方法.因为此方案有一个最大的有点 : 可以获得cc.Event.EventTouch.但是此方案,相比如控件拖动方案要复杂一些,所以给出此Blog予以详解
二 : 详解
Ⅰ: 构建cc.Component.EventHandler对象
export class ClickEvent2CreatTool{private static _instance : ClickEvent2CreatTool = null;public static get Instance() : ClickEvent2CreatTool{if( !ClickEvent2CreatTool._instance ){ClickEvent2CreatTool._instance = new ClickEvent2CreatTool();}return ClickEvent2CreatTool._instance;}public create( $node : cc.Node , $component : string , $handler : string , $param : any ) : cc.Component.EventHandler{let $event : cc.Component.EventHandler = new cc.Component.EventHandler();$event.target = $node;$event.component = $component;$event.handler = $handler;if( $param )$event.customEventData = $param;return $event;}
}
PS create参数 :
①-> $node : 放置脚本的cc.Node
②-> $component : 脚本的名称
③-> $handler : 脚本中为事件处理的函数
④-> $param : 处理函数的用户自定义的参数
Ⅱ : 设计界面
①,结构图如下
②,UI效果图如下
③,BTN不用设置Click Events(我们不用拖控件的方案)
Ⅲ:脚本编写
import {ClickEvent2CreatTool} from "../tool/ClickEvent2CreatTool";const {ccclass, property} = cc._decorator;@ccclass
export default class MainMenu extends cc.Component {@property(cc.Button)btn_map: cc.Button = null;@property(cc.Button)btn_building : cc.Button = null;@property(cc.Button)btn_menu : cc.Button = null;private listener2Btn( $isAdd : boolean ) : void{if( $isAdd ){this.btn_map.clickEvents.push(ClickEvent2CreatTool.Instance.create( this.node , "MainMenu" , "clickHandler" , this.btn_map ));this.btn_building.clickEvents.push(ClickEvent2CreatTool.Instance.create( this.node , "MainMenu" , "clickHandler" , this.btn_building ));this.btn_menu.clickEvents.push(ClickEvent2CreatTool.Instance.create( this.node , "MainMenu" , "clickHandler" , this.btn_menu ));}else{this.btn_map.clickEvents.shift();this.btn_building.clickEvents.shift();this.btn_menu.clickEvents.shift();}}clickHandler( $event : cc.Event.EventTouch, $customEventData : any ) : void{switch( $customEventData ){case this.btn_map:console.log("map click");break;case this.btn_building:console.log("building click");break;case this.btn_menu:console.log("menu click");break;}}start () : void {this.listener2Btn( true );}onDestroy() : void{this.listener2Btn( false );}
}
PS create参数:
①-> this.node 既是UI中的MainMenu节点 , 这个节点会绑定此脚本
②-> MainMenu 脚本的文件名称
③-> clickHandler 脚本中clickHandler方法为Event处理方法
④-> this.btnmap 自定义的参数
Ⅳ : 在UI中使MainMenu节点绑定脚本MainMenu
Ⅴ : 结果
转载于:https://blog.51cto.com/aonaufly/2350691
COCOS CREATOR(TS)之按钮事件相关推荐
- cocos android 剪切板,Cocos Creator 点击按钮复制到剪切版
建一个ts文件,js文件不行,复制下面的代码,在场景中给button绑定事件 // Learn TypeScript: // - https://docs.cocos.com/creator/manu ...
- Cocos Creator 为Button添加事件的两种方法
Button添加事件 Button 目前只支持 Click 事件,即当用户点击并释放 Button 时才会触发相应的回调函数. 通过脚本代码添加回调 方法一 这种方法添加的事件回调和使用编辑器添加的事 ...
- Cocos Creator 键盘监听事件
键盘事件 键盘.设备重力传感器此类全局事件是通过函数 cc.systemEvent.on(type, callback, target) 注册的. cc.SystemEvent.EventType.K ...
- COCOS CREATOR(TS)相对坐标转世界坐标
一 : 前言 这几天在Game中遇到这几个需求 , 发送订单后玩家的金币需要增加,这个时候需要做一个飞金币的效果.如下图所示: 二 : 问题 很明显按钮的父容器和金币信息所在的父容器不是同一个父容器. ...
- Cocos Creator中按钮组件数组的使用
Cocos Creator游戏开发中经常使用到按钮,特别是大量按钮的情况,此时使用数组来管理这些按钮就显得更具通用性.我大致走了一下官方的示例,好像没有发现有这个小内容(或者有,但我却是没有找到),于 ...
- cocos creator 达达麻将(麒麟麻将)运行环境配置
最近想研究下麻将游戏怎么做得,找了一些源码.发现一款达达麻将.前端,后台,以及数据库都是写好了的,可以一试. 由于本人是Android 开发,所以由此可见 ,运行源码的路程是多么的艰辛.... 不过历 ...
- 游戏开发-cocos creator技巧-cc.Component.EventHandler自定义click事件
cocos creator有两种给按钮注册click事件的方式, EventHandler的方式虽然有点麻烦,但是比较灵活,使用时候注意每个参数必须填写正确,否则click时候会报null的错误 第一 ...
- 基于Cocos Creator 2.3.0,使用TypeScript(ts)实现微信跳一跳
在看我这篇文章之前,首先您应该掌握一些基本知识,一是了解和使用cocos creator的常用控件,如Button,Label,Sprite等,脚本事件绑定等;Vscode的基本操作;TypeScri ...
- 【微信授权】cocos creator 3.6.1 微信头像 用户登录授权,微信昵称,用户授权按钮UserInfoButton 创建。
cocos creator 微信头像,微信昵称获取,用户授权按钮显示.头像不显示问题解决,头像显示授权文字 注意,目前微信提供的api只能拿到用户头像和昵称,其余信息都没法拿到 如果你能够拿到的话,可 ...
- 【COCOS CREATOR 系列教程之二】脚本开发篇事件监听、常用函数等示例整合
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/cocos-creator/1959.htm ...
最新文章
- [JS] 动态修改ckPlayer播放器宽度
- android开发模式,Android开发中无处不在的设计模式
- epoll的使用实例
- 在Java 7或更早版本中使用Java 8 Lambda表达式
- poj1284:欧拉函数+原根
- 为什么阿里巴巴建议集合初始化时,指定集合容量大小?
- oracle12c如何存档图片,Oracle Database 12c实用教程
- 万圣节后的早晨九数码游戏——双向广搜
- YYText识别链接和点击事件
- printf输出格式
- 苹果开售官翻iPhone XR机型 最多比新机便宜120美元
- 7z001怎么解压在安卓手机上面_安卓手机怎么可以远程阿里云服务器桌面
- 如何制作独一无二的简历?
- 加拿大PCI GXL地理成像加速器-地理国情大显身手
- GitHub 热点速览 Vol.32:VScode 韭菜基金插件,极大提高“工作”效率
- python用类名直接调用方法_一文读全 Python 的面向对象编程方法
- 每日记录 8.28 TP(真阳率) NP(假阳率) FP
- 在x86和arm编译libmodbus
- 理想二极管是什么意思,有什么特点
- 前端使用html2canvas插件进行截图