Cocos Creator API(方便查找)

// 记一下cocos API,官方文档虽然全,但是没有整合,所以记录一下,方便后续查找
// 以下全部都是从官网文档里面找到的,大部分都做了一下实验,动作系统大部分没有
// 实验使用最新2.0 cocos

Cocos Creator Shader Github -> 	https://github.com/pandamicro/heartfelt
 
// 我想,大部分人应该和我一样,摸索一个引擎的时候最先的就是看看渲染流程是什么
// 不过在测试的时候,查到最新的cocos已经丢弃了sgNode,于是从官方哪里找到一个
// shader流程,真的牛皮,代码太长,看的一头懵逼,
 
cocos 官方教程 				->	http://www.cocoachina.com/bbs/read.php?tid=458895&page=1&toread=1#tpc
 
cocos 全局事件派送 			->	https://forum.cocos.com/t/7-15/37857
 
API 查询 					->	https://docs.cocos.com/creator/api/zh/classes/Event.html
 
:::::::::::::::::::API:::::::::::::::::::::::
 
window.Global = {};						// 公共参数
 
cc.find('Canvas/New Sprite');			// 根据名字查找节点,只会返回第一个
cc.director.getScene();					// 获取当前场景
cc.game.addPersistRootNode(myNode); 	// 常驻挂载点,不会因为切换场景被destroy
cc.game.removePersistRootNode(myNode); 	// 取消常驻属性
// 加载场景,最后是加载完成的函数回调
cc.director.loadScene("MyScene", onSceneLaunched);
// 异步加载场景,手动切换需要再次调用 loadScene
cc.director.preloadScene("table", function () {});
 
this.node.active = bool;			// 隐藏一个节点,会调用 onDisable
this.node.parent = parentNode;		// 设置父节点
this.node.children;					// 返回下一层子节点
this.node.childrenCount;			// 返回下一层子节点数量
this.node.getChildByName('Name')	// 返回下一子层找到的第一个节点
 
cc.isChildClassOf(Texture2D, Texture)	// 判断继承关系,返回bool	
var m = new Method();
if(m instanceof Method)					// 判断类型
 
类的方法 = {
	extends: 基类 // 继承
	// 如果重写父类方法,并且希望调用
	// 则子类使用 this._super();
	{
		// 例
		r_str :function(){
			// 假设父类有这个方法,返回一个字符串为 'world' 则 
			var baseValue = this._super();
			return 'hello ' + baseValue;
		};
	}
	属性定义 = {
		properties : 
		{
			value : 
			{
				default		: null,	  // 变量默认值
				type		: cc.Node // 类型
				displayName : '鼠标放上的注释显示',
				tooltip 	: 'inspactor显示变量名',
			},
			v2 : cc.v2(1,1),
		}
		
		// 第二种方式
		properties: () => ({
			text: ""
		}),
	}
	
	ctor:function() // __ctor__  == ctor
	{
		// 构造函数
	},
	// 如果静态方法写在类中,则会被继承,外部不会
	// 静态成员,必须写在 statics 之中
	statics: {
        _count: 0,
        getCount: function () {}
    },
	// 静态类->例:
	{
        // 这个类名为 c_testClass.js
		var c_testClass = cc.Class({
			extends:cc.Component,
			properties:{},
			onLoad:function(){},
			statics : 
			{
				count:0,
				print:function()
				{
					cc.log('class static method test');
				}
			}
		});
		// 也可以写在外部
		c_testClass.count_01 = 0;	//	声明静态参数
		c_testClass.print_01 : function(){
			cc.log('static method test');
		};
		module.export = c_testClass;	// 其他类使用时必须 require('文件名')
        // 假设我又一个需要使用这个类的类 文件名名为 test.js
        var c_t_class = require('c_testClass');
        cc.Class({
            extends : cc.Component,
            properties : {},
            start:function()
            {
                c_t_class.print();
                c_t_class.print_01();
            }
        });
	}
}
 
获取属性 = {
	this.node.position = cc.v2(100, 50);
	this.node.rotation = 90;
	this.node.setScale(2, 2); OR .scaleX -- .scaleY
---------------------------------------------------
	// 更改节点尺寸,inspactor size
	this.node.setContentSize(100, 100); 
	this.node.setContentSize(cc.size(100, 100));
	// or
	this.node.width = 100;
	this.node.height = 100;
---------------------------------------------------
---------------------------------------------------
	// 修改锚点
	this.node.anchorX = 1;
	this.node.anchorY = 0;
	// or
	this.node.setAnchorPoint(1, 0);
---------------------------------------------------
	
	
};
 
生成物体 = {
    // 不知道为什么,这段代码写在onLoad里面会报错,可能是节点还没初始化???
	var s_scene = cc.director.getScene();
    var t = cc.instantiate(this.node);
	// 必须指定一个根节点才会显示
    t.parent = s_scene;					
    t.position = cc.v2(100,300);
	
	t.destroy();
	setTimeout(function()
    {
		destroy(t);
    },bind(this), 5000); // 毫秒
};
 
// 全局事件,类似 SendMessage cocos 全局事件派送  https://forum.cocos.com/t/7-15/37857
cocos 系统事件监听 = {
	// 第三个参数为 -> 响应函数的调用者
	this.node.on('event name',callback event,this);	// 只能发送本脚本事件
	
	{
		// Windows
		{
			cc.Node.EventType.MOUSE_DOWN	'mousedown'		当鼠标在目标节点区域按下时触发一次
			cc.Node.EventType.MOUSE_ENTER	'mouseenter'	当鼠标移入目标节点区域时,不论是否按下
			cc.Node.EventType.MOUSE_MOVE	'mousemove'		当鼠标在目标节点在目标节点区域中移动时,不论是否按下
			cc.Node.EventType.MOUSE_LEAVE	'mouseleave'	当鼠标移出目标节点区域时,不论是否按下
			cc.Node.EventType.MOUSE_UP		'mouseup'		当鼠标从按下状态松开时触发一次
			cc.Node.EventType.MOUSE_WHEEL	'mousewheel'	当鼠标滚轮滚动时
			
			// 鼠标事件(cc.Event.EventMouse)
		    ->函数名<-		->返回值类型<-		->意义<-
			getScrollY			Number			获取滚轮滚动的 Y 轴距离,只有滚动时才有效
			getLocation			Object			获取鼠标位置对象,对象包含 x 和 y 属性
			getLocationX		Number			获取鼠标的 X 轴位置
			getLocationY		Number			获取鼠标的 Y 轴位置
			getPreviousLocation	Object			获取鼠标事件上次触发时的位置对象,对象包含 x 和 y 属性
			getDelta			Object			获取鼠标距离上一次事件移动的距离对象,对象包含 x 和 y 属性
			getButton			Number	++ 
			cc.Event.EventMouse.BUTTON_LEFT 
			或 cc.Event.EventMouse.BUTTON_RIGHT 
			或 cc.Event.EventMouse.BUTTON_MIDDLE
		}
		
		// Android
		{
			cc.Node.EventType.TOUCH_START	'touchstart'	当手指触点落在目标节点区域内时
			cc.Node.EventType.TOUCH_MOVE	'touchmove'	当手指在屏幕上目标节点区域内移动时
			cc.Node.EventType.TOUCH_END		'touchend'	当手指在目标节点区域内离开屏幕时
			cc.Node.EventType.TOUCH_CANCEL	'touchcancel'	当手指在目标节点区域外离开屏幕时
			
			// 触摸事件(cc.Event.EventTouch)
			->API名<-			->类型<-	->意义<-
			touch				cc.Touch	与当前事件关联的触点对象
			getID				Number		获取触点的 ID,用于多点触摸的逻辑判断
			getLocation			Object		获取触点位置对象,对象包含 x 和 y 属性
			getLocationX		Number		获取触点的 X 轴位置
			getLocationY		Number		获取触点的 Y 轴位置
			getPreviousLocation	Object		获取触点上一次触发事件时的位置对象,对象包含 x 和 y 属性
			getStartLocation	Object		获取触点初始时的位置对象,对象包含 x 和 y 属性
			getDelta			Object		获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性
		}
		
		// cc.Node Event
		{
			->对应的事件名<-   ->事件触发的时机<-
			'position-changed'	当位置属性修改时
			'rotation-changed'	当旋转属性修改时
			'scale-changed'		当缩放属性修改时
			'size-changed'		当宽高属性修改时
			'anchor-changed'	当锚点属性修改时
		}
		
	};
	
	// 向上级派送事件,冒泡,会忽略父级同级节点脚本
	this.node.dispatchEvent( new cc.Event.EventCustom('_say',true));
	// 父级脚本里面需要用on监听
	this.node.on('_say',function(){cc.log('hello')});
	event.stopPropagation(); // 中断派送冒泡
};
 
// 官方API实例 		https://docs.cocos.com/creator/api/zh/modules/cc.html#方法名
// 如->sequence	 	https://docs.cocos.com/creator/api/zh/modules/cc.html#sequence
动画系统 = {
	
	
	// 执行API
	{
		cc.sequence			顺序执行动作
		cc.spawn			同步执行动作
		cc.repeat			重复执行动作
		cc.repeatForever	        永远重复动作
		cc.speed			修改动作速率
		/*
		// 例 :
		/// parameter callback  = method name
		/// parameter context   = this		// 指定谁调用,设置上下文
		/// parameter parameter = parameter // 参数列表
		var finished = cc.callFunc(callback, context, parameter); // 设置动作回调
		
		this.jumpAction = cc.sequence(		// 顺序执行动作,下面的API会按照顺序执行
		
			cc.spawn(						// 同步执行动作,下面两个动作会同步进行。
			
				cc.scaleTo(0.1, 0.8, 1.2),	// 缩放系数 -> 将节点大小缩放到指定的倍数
				cc.moveTo(0.1, 0, 10)		// 移动坐标 -> 移动到目标位置
				
			),
			cc.spawn(
				cc.scaleTo(0.2, 1, 1),
				cc.moveTo(0.2, 0, 0)
			),
			
			cc.delayTime(0.5),				// 延时动作, 秒
			
			cc.spawn(
				cc.scaleTo(0.1, 1.2, 0.8),
				cc.moveTo(0.1, 0, -10)
			),
			cc.spawn(
				cc.scaleTo(0.2, 1, 1),
				cc.moveTo(0.2, 0, 0)
			),
			
			finished // 执行完完毕的回调方法
			
		).speed(2).repeat(5);				// 以1/2的速度慢放动画,并重复5次
		*/
	}
 
	动作API
	{
		cc.show 				立即显示。
		cc.hide 				立即隐藏。
		cc.toggleVisibility 	显隐状态切换。
		cc.removeSelf 			从父节点移除自身。
		cc.flipX 				X轴翻转。
		cc.flipY 				Y轴翻转。
		cc.place 				放置在目标位置。
		cc.callFunc 			执行回调函数。
		cc.sequence 			顺序执行动作,创建的动作将按顺序依次运行。
		cc.repeat 				重复动作,可以按一定次数重复一个动,如果想永远重复一个动作请使用 repeatForever 动作来完成。
		cc.repeatForever 		永远地重复一个动作,有限次数内重复一个动作请使用 repeat 动作,由于这个动作不会停止,所以不能被添加到 cc.sequence 或 cc.spawn 中。
		cc.spawn 				同步执行动作,同步执行一组动作。
		cc.rotateTo 			旋转到目标角度,通过逐帧修改它的 rotation 属性,旋转方向将由最短的角度决定。
		cc.rotateBy 			旋转指定的角度。
		cc.moveBy 				移动指定的距离。
		cc.moveTo 				移动到目标位置。
		cc.skewTo 				偏斜到目标角度。
		cc.skewBy 				偏斜指定的角度。
		cc.jumpBy 				用跳跃的方式移动指定的距离。
		cc.jumpTo 				用跳跃的方式移动到目标位置。
		cc.bezierBy 			按贝赛尔曲线轨迹移动指定的距离。
		cc.bezierTo 			按贝赛尔曲线轨迹移动到目标位置。
		cc.scaleTo 			    将节点大小缩放到指定的倍数。
		cc.scaleBy 			    按指定的倍数缩放节点大小。
		cc.blink  				闪烁(基于透明度)。
		cc.fadeTo 				修改透明度到指定值。
		cc.fadeIn 				渐显效果。
		cc.fadeOut 			    渐隐效果。
		cc.tintTo 				修改颜色到指定值。
		cc.tintBy 				按照指定的增量修改颜色。
		cc.delayTime 			延迟指定的时间量。
		cc.reverseTime 		    反转目标动作的时间轴。
		cc.targetedAction 		用已有动作和一个新的目标节点创建动作
		
		
		cc.easeIn 						创建 easeIn 缓动对象,由慢到快。
		cc.easeOut 					    创建 easeOut 缓动对象,由快到慢。
		cc.easeInOut 					创建 easeInOut 缓动对象,慢到快,然后慢。
		cc.easeSineIn 					按正弦函数缓动进入的动作。
	}
	
};
 
计时器 = {
	{
		this.schedule				开始一个计时器
		this.scheduleOnce			开始一个只执行一次的计时器
		this.unschedule				取消一个计时器
		this.unscheduleAllCallbacks 取消这个组件的所有计时器
	}
	
	this.schedule(function() {
        // 这里的 this 指向 component
        this._say();
    }, 5);
	
	OR
	
	var interval = 5;	// 时间间隔,秒
	var repeat = 3;		// 重复次数
	var delay = 10;		// 延时
	this.schedule(function() {
		this._say();
	}, interval, repeat, delay);
	
	_say:function(){
        cc.log('我好烦弱类型');
    },
	
	this.unschedule(this.callback);	// 取消计时器
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值