![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Js
振长策而御宇内
一只在编程海洋中遨游的小虾米
展开
-
Cocosd2d-js 实现窗体管理器
根据弹出窗体的不同层级进行管理和关闭,可以知道当前scene都弹出哪些窗体,便于统一化管理"use strict";var modalDlg = require("./../../ui/common/ModalDialogLayer.js");var WindowManager = cc.Class.extend({ windowList: null, baseZorde原创 2016-04-27 11:18:41 · 507 阅读 · 0 评论 -
cocos2d-js 把JS错误打印到屏幕上
在编程或者QA测试过程中,把debug的包中JS错误打印在屏幕上可以增加开发效率,降低定位bug时间成本。修改ScriptingCore.cpp文件:void ScriptingCore::reportError(JSContext *cx, const char *message, JSErrorReport *report){ js_log("%s:%u:%s\n",原创 2016-08-30 10:29:41 · 1553 阅读 · 0 评论 -
cocos2d中间层创建(一)
首先编辑jsb中间层,主要是在AppDelegate中进行注册单例,在js中进行调用jsb_lcm_api.h://// jsb_lcm_api.h// MoonWarriors//// Created by xiaohei on 2/21/17.////#ifndef __LCM__jsb_lcm_api__#define __LCM__jsb_lcm_api原创 2016-08-30 10:30:04 · 542 阅读 · 0 评论 -
cocos2d中间层调用IOS(二)
ios通过.mm文件进行调用AppController.mm的方法js_bindings_lcm_api.h://// js_bindings_lcm_api.h// MoonWarriors//// Created by xiaohei on 2/21/17.////#ifndef __LCM__js_bindings_lcm_api__#define __L原创 2016-08-30 10:30:23 · 657 阅读 · 0 评论 -
cocos2d中间层调用Android(三)
ios通过.cpp文件进行调用AppActivity.java的方法js_bindings_lcm_api.cpp://// js_bindings_lcm_api.cpp// MoonWarriors//// Created by xiaohei on 2/21/17.////#include "js_bindings_lcm_api.h"#ifdef ANDR原创 2016-08-30 10:31:00 · 569 阅读 · 0 评论 -
cocos2d-js 图片灰度处理
使用shader把图片进行灰度处理,并支持切回原色潜在bug:如果调用两次灰度处理,则无法进行色彩还原LayoutConfig.setWidgetEffectWithEnabled = function (widget,enable) { if(!widget){return;} widget.setTouchEnabled(enable); LayoutCo原创 2016-08-30 10:31:35 · 1561 阅读 · 0 评论 -
cocos2d-js 实现观察者模式
1. 手动管理观察者listenerName2. 确保只有注册过的才能下发事件3. 当前模式只支持唯一观察者listenerName,不支持共享4. 在切换到登录界面时要清空所有listenerHelpTool._listenerList = {};HelpTool.setListenerFlag = function(listenerNameTable, flag) {原创 2016-08-30 10:31:18 · 584 阅读 · 0 评论 -
cocos2d-js 屏幕拖拽
var tmp = this; cc.eventManager.addListener({ event: cc.EventListener.TOUCH_ONE_BY_ONE, swallowTouches: true, onTouchMoved: function (touches, event) {原创 2016-09-30 11:34:45 · 1384 阅读 · 0 评论 -
cocos2d-js 实现窗体管理器
该窗体管理器拥有四个接口:1.弹出自带左上角返回的全屏界面WinMgrGetInstance().addBackLayer(layer, exitFunc);exitFunc 表示关闭时调用的exitFunc,比如刷新操作等 ~弹出全屏界面后会隐藏之前弹出的所有界面,无需手动隐藏2.弹出自带关闭按钮的非全屏界面WinMgrGetInstance().addPo...原创 2017-10-26 18:19:55 · 664 阅读 · 1 评论 -
JS 正则表达式去掉字符串中标点符号
输入: “A man, a plan, a canal: Panama”var str = s.replace(/[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,""); 输原创 2018-07-21 01:27:10 · 16109 阅读 · 0 评论 -
JS 正则表达式公式(全)
验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ 验证m-n位的数字:^\d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^\+...原创 2018-07-21 16:33:22 · 1028 阅读 · 0 评论 -
cocos2d-js 重新require js文件(二)
重新require JS文件指的是在调用require文件后,在ScriptingCore中重新编译该文件,在编程或者界面制作过程中提升效率,修改文件后只需要重新打开该窗口即可生效。在(一)中,代码针对cocos2dx-js 3.2 版本 传送门目前cocos版本升级到cocos2d-x-3.16,之前的代码不生效,需要手动cleanScript然后在Require调用:HelpT...原创 2018-08-20 15:03:38 · 1418 阅读 · 0 评论 -
cocos2d-js打印当前调用栈
在运行程序时,通过在控制台打印执行当前语句时所执行的所有调用栈,通过打印定位调用顺序,帮助排除错误。通用接口如下:HelpTool.printStack = function() { try { throw new Error(); } catch(e) { HelpTool.log("Print Stack: ", e.stack); ...原创 2019-10-12 11:42:49 · 1236 阅读 · 0 评论 -
cocos2d-js CSB布局样式
var OPCSBFunc = OPCSBFunc || {};OPCSBFunc.getCSBMainLayer = function(path) { var csbLayer = LayoutConfig.createCSBLayer(path, false); var layer = csbLayer.getChildByName("Panel_main"); la...原创 2019-10-12 11:42:26 · 324 阅读 · 0 评论 -
cocos2d-js 数字自动滚动效果
实现方式一:从数字1滚动到数字2,并显示增加减少数量rollFightNum: function(num1, num2) { if (!this._powerLabelClone) { this._powerLabelClone = this._powerLabel.clone(); this._powerBg.addChild(this._powerL...原创 2019-10-12 11:42:10 · 576 阅读 · 0 评论 -
cocos2d-js 重新require JS文件
重新require JS文件指的是在调用require文件后,在ScriptingCore中重新编译该文件,在编程或者界面制作过程中提升效率,修改文件后只需要重新打开该窗口即可生效。调用:HelpTool.requireScript("src/pve/SuperStarShop.js", true);ScriptingCore.cpp修改runScript:bool Scrip...原创 2016-08-30 10:28:53 · 2117 阅读 · 0 评论 -
JS 计算Object长度
在我们日常开发中,对象的使用频率很高,我们计算数组的长度是非常方便的,但是如何计算对象的长度呢?假如我们有一个图书馆的项目,项目中有一组图书和作者,像下面这样:1var bookAuthors = {2 "Farmer Giles of Ham": "J.R.R. Tolkien",原创 2016-07-31 22:02:40 · 25047 阅读 · 0 评论 -
Cocosd2d-js 实现模态对话框
使用模态对话框主要是吞噬点击事件,让点击不会透传导底部,新建窗口都继承自模态对话框,也可以创建子类便于实现打开和关闭的动画效果/** * Created by shake on 16/4/7. */"use strict";var ModalDialogLayer = cc.Layer.extend({ m_touchListener:null, ctor:func原创 2016-04-27 11:21:26 · 661 阅读 · 0 评论 -
Cocosd2d-js 实现序列化Json文件
序列化Json文件到对象数组中var JsonDataReader = cc.Class.extend({ mapdata: null, ctor: function (data, keyName1, keyName2) { this.loadJson(data, keyName1, keyName2); }, loadJson: function(data原创 2016-04-27 13:15:33 · 942 阅读 · 0 评论 -
Cocosd2d-js 使用Cocos Studio生成的Json界面文件
使用Cocos Studio生成界面文件,用Js进行加载,将生成Json文件和图片素材放在res目录下,比如登陆界面的LoginScene.json文件加载如下: var UIroot = ccs.load(game.resources["LoginScene_json"]).node; UIroot.setAnchorPoint(cc.p(0.5,0.5));原创 2016-04-27 14:07:27 · 1795 阅读 · 0 评论 -
Cocosd2d-js 数组使用
数组的定义数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。var arr = ['a', 'b', 'c'];上面代码中的a、b、c就构成一个数组,两端的方括号是数组的标志。a是0号位置,b是1号位置,c是2号位置。除了在定义时赋值,数组也可以先定义后赋值。var arr = [];arr[0]转载 2016-04-27 16:38:48 · 2514 阅读 · 0 评论 -
Cocosd2d-js 对象使用
概述定义方法对象(object)是JavaScript的核心概念,也是最重要的数据类型。JavaScript的所有数据都可以被视为对象。简单说,所谓对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成。var o = { p: 'Hello World'};上面代码中,大括号就定义了一个对象,它被赋值给变量o。这个对转载 2016-04-27 16:44:22 · 783 阅读 · 0 评论 -
Cocosd2d-js 类型转换
JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予任意值。但是,数据本身和各种运算是有类型的,因此运算时变量需要转换类型。大多数情况下,这种数据类型转换是自动的,但是有时也需要手动强制转换。强制转换强制转换主要指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。Number函数:转载 2016-04-27 16:46:55 · 1037 阅读 · 0 评论 -
Cocosd2d-js 异常处理
Error对象一旦代码解析或运行时发生错误,JavaScript引擎就会自动产生并抛出一个Error对象的实例,然后整个程序就中断在发生错误的地方。Error对象的实例有三个最基本的属性:name:错误名称message:错误提示信息stack:错误的堆栈(非标准属性,但是大多数平台支持)利用name和message这两个属性,可以对发生什么错误有一转载 2016-04-27 16:48:11 · 1491 阅读 · 0 评论 -
Cocosd2d-js 判断字符串包含
1. 例子: var tempStr = "tempText" ; tempStr.indexOf("Texxt"); //返回大于等于0的整数值,若不包含"Text"则返回"-1。 2. indexOf用法: strObj.indexOf(subString[, startIndex]) JavaScript中ind原创 2016-06-29 10:30:07 · 1235 阅读 · 0 评论 -
Cocosd2d-js this关键字使用
本文内容大纲:This 绑定的内容与函数无关,而与函数的执行环境有关。函数的 This 绑定的内容可以通过 bind,apply 和 call 函数来动态进行修改。巧用闭包可以消除不必要的 This 动态绑定,提高代码的可读性。This 绑定内容与函数无关,而与执行环境有关在上篇文章 中,我们提到了,一个函数在调用时会创建一个活动对象,而此活动对转载 2016-06-29 10:42:25 · 1042 阅读 · 0 评论 -
JS 计算Object长度(二)
概述Object.keys() 方法会返回一个由给定对象的所有可枚举自身属性的属性名组成的数组,数组中属性名的排列顺序和使用for-in循环遍历该对象时返回的顺序一致(两者的主要区别是 for-in 还会遍历出一个对象从其原型链上继承到的可枚举属性)。语法Object.keys(obj)参数obj返回该对象的所有可枚举自身属性的属性名。描述Object.原创 2016-07-31 22:03:01 · 723 阅读 · 0 评论 -
JS字符串包含
1. 例子: var tempStr = "tempText" ; tempStr.indexOf("Texxt"); //返回大于等于0的整数值,若不包含"Text"则返回"-1。 2. indexOf用法: strObj.indexOf(subString[, startIndex]) JavaScript中i原创 2016-07-31 22:04:14 · 4554 阅读 · 0 评论 -
Cocos2d-js 事件处理机制
Cocos2d-x学习笔记—事件处理机制一:事件处理机制一个事件由触发到完成响应,主要由以下三部分组成:事件分发器EventDispatcher;事件类型EventTouch、EventKeyboard等;事件监听器EventListenerTouch、EventListenerKeyboard等。在Cocos2d-x v3.x中,关于事件的东西,无非就是围绕上述的转载 2016-07-31 22:03:29 · 613 阅读 · 0 评论 -
JS 生成从n~m的随机数字
Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1)生成n-m,包含n但不包含m的整数:第一步算出 m-n的值,假设等于w第二步Math.random()*w第三步Math.random()*w+n第四步parseInt(Math.random()*w+n, 10)生成n-m,不包含n但包含m的整数:第原创 2016-07-31 22:03:51 · 675 阅读 · 0 评论 -
JS 区分+0和-0
我们知道在javascript中,所有的数值都是浮点数,遵从IEEE754双精度浮点数标准,在js中我们通常写0,这意味着+0,但是它也意味着是-0,看下面实例:function c(expression) { console.log(expression);}c(-0); // -0c(-0 === +0); // truec((-0).toString()); // 0c(原创 2016-07-31 22:03:15 · 5262 阅读 · 0 评论 -
cocos2d-js 消耗/拥有数量居中显示
对于消耗>拥有 和 消耗<=拥有有不同颜色处理且都需要显示的情况,增加居中显示的接口注:以左侧widget初始坐标为中心,左侧锚点在最优,右侧锚点最左CocosUtility.setupTwoWidgetMiddle = function(rootWidget, widgetInfo) { if(!rootWidget || !widgetInfo || !widgetIn...原创 2019-10-12 11:41:52 · 201 阅读 · 0 评论