整理CocosCreator常用知识点

一、场景加载

  • cc.director.loadScene(‘场景名称');//场景跳转
  • cc.director.preloadScene(‘场景名称');//预加载场景
  • cc.director.getScene();//获取当前场景

二、查找节点

1,节点查找

  • node = cc.find(“Canvas/bg”);//路径访问节点 性能消耗相对较大
  • this.node.getChildByName(‘name');//名称获取子节点 性能消耗较小
  • node.getComponent(cc.Label)//获取节点上label属性值
  • this.node; //当前脚本节点
  • this.node.parent; //父节点
  • this.node.getChildByTag(100); //通过标签获取子节点
  • cc.find(“game/test”,this.node); //通过指定节点下的路径获取节点
  • this.node.children; //获取所有子节点
  • node.getChildren(); //获取所有子节点
  • this.node.childrenCount; //获取子节点数量
  • node.getChildrenCount(); //获取子节点数量
  • cc.director.getScene(); //获取场景主节点
  • var sprites = this.node.getComponentsInChildren(cc.Label);//递归查找自身及所有子节点中指定类型的组件

2,节点其他操作

  • cc.instantiate(node);//克隆节点
  • this.node.parent = cc.find(‘Canvas');//绑定父节点
  • this.node.addChild(nodeName,zIndex,tag);//添加子节点,可设置层级和标签
  • this.node.removeChild(nodeName);//移除子节点
  • this.node.removeChildByTag (nodeTag);//通过标签移除子节点
  • this.node.destroy();//销毁节点
  • this.node.isValid;//判定节点是否可用
  • this.node.removeChild(newNode);//移除节点中指定的子节点
  • this.node.removeChildByTag(100);//通过标签移除节点中指定的子节点
  • this.node.removeAllChildren();//移除所有子节点
  • this.node.destroyAllChildren();//销毁所有子节点

3,停止播放动作以及计时器

this.node.cleanup();//停止所有正在播放的动作和计时器

三、节点属性设置

  • node.getPositionX();或 getPositionY() //X轴或Y轴坐标
  • node.getScaleX(); 或getScaleY() //X轴或Y轴缩放比例
  • node.x = 100;//设置节点x轴坐标
  • node.y = 100;//设置节点y轴坐标
  • node.setPosition(x,y); //设置节点坐标
  • node.rotation = 90; //设置节点旋转角度
  • node.scaleX = 2; //设置节点x轴缩放倍数
  • node.scaleY = 2; //设置节点y轴缩放倍数
  • node.setScale(2); //设置节点整体缩放倍数
  • node.width = 100; //设置节点宽度大小
  • node.height = 100; //设置节点高度大小
  • node.setContentSize(100, 100); //设置节点宽高尺寸大小
  • node.anchorX = 1; //设置节点x轴锚点坐标
  • node.anchorY = 0; //设置节点y轴锚点坐标
  • node.setAnchorPoint(1, 0); //设置节点锚点坐标
  • node.opacity = 255; //设置节点透明度大小(0-255)
  • node.setOpacity(20); //设置节点透明度(0~255)
  • node.color = new cc.color(100,100,100,255); //设置节点颜色(R,G,B,透明度)
  • cc.isValid(this.label.node) //判定节点是否存在
  • node.active = false; //关闭节点(隐藏节点)

常驻节点

  • cc.game.addPersistRootNode(myNode); //常驻节点(全局变量)
  • cc.game.removePersistRootNode(myNode); //取消常驻节点

四、节点动作

  • cc.show()//立即显示
  • cc.hide ()//立即隐藏
  • cc.toggleVisibility()//显隐切换
  • cc.fadeIn(1)//渐显效果
  • cc.fadeOut(1)//渐隐效果
  • cc.delayTime(1)//等待1秒
  • node.runAction(cc.moveTo(1,0,0)); //移动到当前节点(时间(s),X轴坐标,Y 轴坐标)
  • node.runAction(cc.scaleTo(1,0.7,0.8));//缩放到当前倍数节点(时间(s),X轴倍数,Y 轴倍数)
  • node.runAction(cc.rotateTo(1,160,160));//旋转到指定角度(时间(s),X轴角度,Y 轴角度)
  • node.runAction(cc.skewTo(1,5,-5));//变化节点倾斜度(时间(s),X轴倾斜度,Y 轴倾斜度)
  • node.runAction(cc.fadeTo(2,0));//变化当前节点的透明度(时间(s),透明度)
  • node.runAction(cc.tintTo(2,255,255,0));//变化当前节点颜色(时间,R,G,B)
  • node.stopAllActions();//停止所有动作
  • var action = cc.moveTo(2, 100, 100);// 创建一个动作(moveTo是移动)
  • node.runAction(action);// 执行指定动作
  • node.stopAction(action);// 停止指定动作
  • cc.sequence(action1,action2); //按顺序连续执行
  • cc.spawn(action1,action2); //同时执行
  • cc.repeatForever(cc.sequence(action1,action2)); //一直重复的动作

五、计时器

start() {
        // 定时启动
        // 在2S以后启动
        this.scheduleOnce(() => {
            cc.log("scheduleOnce")
        }, 2)

        //   频率  次数+1  延迟
        this.schedule(() => {
            cc.log("schedule")
        }, 1, 3, 5)

        // 永远执行
        let one = this.schedule(() => {
            cc.log("schedule")
        }, 1, cc.macro.REPEAT_FOREVER, 2)

        // 清除所有定时
        this.scheduleOnce(() => {
            cc.log("scheduleOnce")
            this.unscheduleAllCallbacks()
        }, 5)

        let callb = function () {
            cc.log("callb")
        }
        this.schedule(callb, 0.5)  //默认永远执行

        this.scheduleOnce(() => {
            cc.log("scheduleOnce")
            this.unschedule(callb)
        }, 2)
    },

六、事件监听

(开始:‘touchstart',移动:‘touchmove',结束:‘touchend',取消:‘touchcancel')

node.on('touchstart',function(event){
	this.doSomething();
},this);
  • event.getID();//获取触点的ID
  • event.getLocationX();//获取触摸点的坐标X
  • event.getLocationY();//获取触摸点的坐标Y
cc.eventManager.addListener({
	event: cc.EventListener.KEYBOARD/TOUCH_ONE_BY_ONE,myfunction},self.node);

七、定义全局变量

window.global= “blobal string”;//任意脚本里可定义全局变量

window.G = {
	a: null,
	b: null,
};

任意脚本里可访问全局变量(前提是脚本已执行过)
G.a = 0;
G.b = 0;

var something = require(‘something');
cc.game.addPersistRootNode(myNode);//常驻节点,必须位于层级的根节点
module.exports = {
     config: 123
}

八、分辨率

获得设备分辨率

  • var equipment= cc.director.getWinSizeInPixels()
  • var equipmentW= equipment.width
  • var equipmentH= equipment.height
  • cc.view.getCanvasSize().width;//获得设备分辨率的宽度
  • cc.view.getCanvasSize().height;//获得设备分辨率的高度
  • cc.director.setDisplayStats(true);//显示帧数信息

九、音频控制

cc.audioEngine.playMusic(this.BGAudio,true);//播放音乐(true循环)
cc.audioEngine.stopMusic()//停止播放
cc.audioEngine.playEffect(this.ClickAudio,false);//播放音效(false代表只播放一次)
cc.audioEngine.stopEffect(音效变量名);//停止指定音效(需要先把音效赋值给变量)
cc.audioEngine.AllEffects();//停止所有音效
cc.audioEngine.setMusicVolume(参数); //设置背景音乐的音量(范围是0到1)
cc.audioEngine.setEffectsVolume(参数); //设置音效的音量(范围是0到1)

十、设备判断

  • cc.sys.isNative //是否是本地
  • cc.sys.isBrowser //是否是网页
  • cc.sys.isMobile //是否是移动系统
  • cc.sys.platform //正在运行的平台
  • cc.sys.language //当前运行系统的语言
  • cc.sys.os //当前正在运行的系统
  • cc.sys.OS_IOS //是否是IOS系统
  • cc.sys.OS_ANDROID //是否是android系统
  • cc.sys.OS_WINDOWS //是否是windows系统
  • cc.sys.openURL(‘Http://www.baidu.com'); //打开网页

十一、监听和发射事件

  • this.node.pauseSystemEvents(true);//暂停节点系统事件
  • this.node.resumeSystemEvents(true);//恢复节点系统事件
  • this.node.targetOff(this);//移除所有注册事件

1、触摸监听

开始'touchstart',
移动'touchmove',
结束'touchend',
取消'touchcancel'

  • var pos = event.getLocation();//获取触摸点的坐标(包含X和Y)
  • var x = event.getLocationX();//获取触摸点的X坐标
  • var y = event.getLocationY();//获取触摸点的Y坐标
  • var a = event.getID();//获取触点的ID

2、鼠标监听

鼠标按下'mousedown',
移入节点'mouseenter',
节点中移动'mousemove',
移出节点'mouseleave,
‘松开鼠标'mouseup'

  • event.getScrollY();//获取滚轮滚动的 Y 轴距离,只有滚动时才有效
  • event.getLocation();//获取鼠标位置对象,对象包含 x 和 y 属性

3、输入框监听

获得焦点'editing-did-began',
文字变化'text-changed',
失去焦点'editing-did-ended',
按下回车'editing-return'

4,属性变化监听

位置'position-changed',
宽高 ‘size-changed',
旋转'rotation-changed',
缩放'scale-changed'

5、ScrollView控件监听

滚动中'scrolling',
停止滚动'scroll-ended'

6、用户自定义事件

监听: this.node.on(“自定义事件名称”, function(target) , this);

  • this.node.on(‘事件名',function,this);//注册监听
  • this.node.emit(‘事件名');//发送监听广播
  • this.node.off(‘事件名',function,this);//关闭监听

自派送: emit(“事件名称”, [detail]); 只有自己能够收到

onLoad: function () {
        // 接收者
        // 事件类型,是你自定义的字符串;
        // 回掉函数: function(e) {} e--> cc.Event.EventCustom的实例
        this.node.on("pkg_event", function (e) {
            console.log("pkg_event", e);
        }, this);
        // 派发者,只能传递给自己,不会向上传递
        this.node.emit("pkg_event", { name: "hanbao" });
    },

冒泡派送: dispatchEvent(new cc.Event.EventCustom(“name”, 是否冒泡传递));

onLoad: function () {
        // 接收者
        // 事件类型,是你自定义的字符串;
        // 回掉函数: function(e) {} e--> cc.Event.EventCustom的实例
        this.node.on("pkg_event", function (e) {
            console.log("pkg_event", e.detail);
        }, this);
    },
    start: function () {
        this.node.emit("pkg_event", { name: "hanbao" });  //这里会派发一次给自己
        // //这里派发给全局 发给这个体系;
        // true/false, true向上传递, false不向向上传递
        var e = new cc.Event.EventCustom("pkg_event", true);
        e.detail = { name: "haobao" };
        this.node.dispatchEvent(e);
    },

补充:

  • cc.director.pause();//暂停
  • cc.director.resume();//继续
  • cc.director.end();//退出整个应用
  • node.getLocalZOrder();//层级获取
  • node.setLocalZOrder(1);//层级改变
  • cc.find(‘canvas/map' + num)//读取带变量的路径

以上就是整理CocosCreator常用知识点的详细内容,更多关于CocosCreator知识点的资料请关注我们其它相关文章!

(0)

相关推荐

  • 如何使用CocosCreator对象池

    前言: 在运行时进行节点的创建( cc.instantiate )和销毁( node.destroy )操作是非常耗费性能的,因此我们在比较复杂的场景中,通常只有在场景初始化逻辑( onLoad )中才会进行节点的创建,在切换场景时才会进行节点的销毁.如果制作有大量敌人或子弹需要反复生成和被消灭的动作类游戏,我们要如何在游戏进行过程中随时创建和销毁节点呢?这里就需要对象池的帮助了. 对象池就是一组可回收的节点对象,我们通过创建cc.NodePool的实例来初始化一种节点的对象池.通常当我们有多个

  • CocosCreator通用框架设计之网络

    前言 在 Cocos Creator 中发起一个 http 请求是比较简单的,但很多游戏希望能够和服务器之间保持长连接,以便服务端能够主动向客户端推送消息,而非总是由客户端发起请求,对于实时性要求较高的游戏更是如此.这里我们会设计一个通用的网络框架,可以方便地应用于我们的项目中. 使用websocket 在实现这个网络框架之前,我们先了解一下 websocket.websocket 是一种基于 tcp 的全双工网络协议,可以让网页创建持久性的连接,进行双向的通讯.在 Cocos Creator

  • CocosCreator如何实现划过的位置显示纹理

    1.项目需求 项目需要有一个功能:是当一个光点走过的路径,这个路径的位置就都亮起来的功能. 2.资料内容 功能类似这位大神的橡皮擦功能:https://forum.cocos.org/t/2-0-8/74246 但是,项目的需求还要经过的路径周围有模糊的外边--也就是从中心到边缘越来越暗. 所以对于借鉴了网上大神的shader例子,类似以下的示例: 在大神的肩膀上做了一些改动,来实现项目的需求. 3.项目示例 以下是我自己的测试项目的示例: (请忽略这渣渣的画质,懒得装录屏软件了) 4.项目代码

  • 如何在CocosCreator中利用常驻节点做图层管理

    CocosCreator版本:2.3.4 一般游戏都有图层管理,比如 sceneLayer 场景层 panelLayer 弹框层 tipLayer   提示框层 cocos里的场景不是持久化的,每次切换都会自动destroy,如果在场景上放这些图层,那么每个scene都要放一遍?然后再获取,这样很麻烦. 加载场景使用的是cc.director.loadScene,scene的容器node貌似是director上的一个nodeActivator 现在如果不考虑scene的容器或者cocos的顶层容

  • CocosCreator ScrollView优化系列之分帧加载

    一. 前言 JS是单线程的,也就意味着所有任务需要排队,只有当前一个任务结束了,后一个任务才会执行.如果前一个任务耗时很长,后一个任务就不得不一直等着. Cocos Creator 是采用 Java Script/Type Script语言开发,本质上是JS,同样会拥有以上特征.特别地,如果使用不当,极有可能导致界面卡顿. 比如:在为一个ScrollView的Content创建500个节点的的时候,可能就会出现下面界面卡死的问题 PS:本来加载过程中有一个loading对话框,因为卡死了,就感觉

  • 全面讲解CocosCreator热更新

    前言 本文主要引用cocos关于热更的官方文档,并在此基础上,总结sprout当前热更流程. 什么是热更 热更(新)本质上是从服务器下载需要的资源到本地,并且可以执行新的游戏逻辑,让新资源可以被游戏所使用,它可以使开发者在不发布新版本的情况下,修复 BUG 和发布功能,让开发者得以绕开苹果的审核机制,避免长时间的审核等待以及多次被拒造成的成本. Cocos 默认的热更新机制并不是基于补丁包更新的机制,传统的热更新经常对多个版本之间分别生成补丁包,按顺序下载补丁包并更新到最新版本.Cocos 的热

  • 详解CocosCreator项目结构机制

     一.项目文件夹结构 初次创建并打开一个 Cocos Creator 项目后,开发者的项目文件夹将会包括以下结构: 下面我们将会介绍每个文件夹的功能. 1.资源文件夹(assets) assets 将会用来放置游戏中所有的本地资源.脚本和第三方库文件.只有在 assets 目录下的内容才能显示在 资源管理器 中.assets 中的每个文件在导入项目后都会生成一个相同名字的 .meta 文件,用于存储对应的资源配置和索引信息..meta 文件需要一并提交到版本控制系统,详见 资源管理注意事项 --

  • 详解cocoscreater预制体prefab

    预制体prefab 什么是预制体,字面意思,还未使用前预先制作好的节点资源,属性等同于普通节点,可以看做一个预先制作还没展示出来的普通的节点 怎么创建预制体 1.在层级管理器处先创建普通的节点,然后把这个节点拖拽到资源管理器的assets文件夹下,出于方便管理会统一建立一个Prefab文件夹下统一存放预制体 双击预制体节点可以看到它呈现蓝色,这时候就可以删除还留在场景场景里的节点,需要使用该节点时,通过预制体创建 这时候可以看到属性检查器里的属性,和普通节点一致 预制体的作用 1.批量创建相同类

  • CocosCreator经典入门项目之flappybird

    开发环境 CocosCreator v2.3.1 node.js v10.16.0 vscode 1.46.1 游戏引擎概念 可以理解为一套已经编写好的代码,它封装了对底层接口的使用,是游戏开发的核心功能提供者. 一般分为6各部分: 图像渲染:控制电脑对游戏绘画的绘画操作,直接影响游戏质量 音频UI:提供音频特效,以及游戏UI部分,让游戏与用户交互更好 设备输入:键盘.鼠标.陀螺仪等 脚本引擎:提供脚本接口,为游戏开发者提供"笔墨" 网络引擎:数据交互模块,用服务器为客户端提供交互 物

  • 怎样在CocosCreator中使用游戏手柄

    一.场景布置 二. 添加手柄监听器 1.监听事件的变化 由原先的mouse系列的转换为touch系列的 touchstart 触摸按下,相当于 mousedown touchmove 触摸移动,相当于 mousemove touchend 触摸抬起,相当于 mouseup touchcancel 触摸取消,被其他事件终止,相当于按下了ESC键 2.坐标设定 当触摸按下随推动位置变化(要用世界坐标转换),触摸抬起后回归原位(直接设定0,0坐标默认相对坐标). setPosition()设定的为相对

  • 游戏开发中如何使用CocosCreator进行音效处理

    在游戏开发中,我们经常需要使用音效来营造游戏氛围,因此本文给大家总结下 Cocos Creator 游戏开发中音效组件的封装和使用. 一. Cocos Creator 中音频播放基础 1. 基础知识 [1]AudioSource 组件官方文档:http://docs.cocos.com/creator/manual/zh/audio/audio.html [2]cc.audioEngine官方文档:http://docs.cocos.com/creator/manual/zh/audio/aud

  • 如何用CocosCreator实现射击小游戏

    分析下制作步骤: 1. 准备好资源,搭建场景 资源的话可以自己到网上找,也可以直接用我的也行:创建好相应文件夹,把资源放到res文件夹下: 搭建场景: 第一步:创建一个单色精灵(Script) bg 背景, 设置好颜色,加一个Widget组件,使其充满屏幕: 第二步: 在bg节点下创建top和button空节点作为顶与底部,然后在两个空节点加入带刺的节点(直接将图片拖到top层级管理器就可以),现在我们需要给top与button节点添加一个Layout组件,属性设置如图,这样可以看到屏幕上下都有

随机推荐