Cocos备忘录

经常有些东西久了不用就忘了... 直接记到这里好了...

 一  toggle按钮

 二  tween基本用法

三 按钮点击监听的e

四 按钮或图片置灰

五  schedule无限执行

六 取有效小数位

七 贝塞尔曲线

八 spine动画的事件

九 文本的颜色

十 Date 

一 toggle按钮

 类似这种菜单单选按钮,创建ToggleContainer组件。

 cocos里没有监听toggleContainer容器的方法?貌似只能监听单个按钮。

this.toggle1.node.on("toggle", this.onToggleTap, this);
this.toggle2.node.on("toggle", this.onToggleTap, this);
this.toggle3.node.on("toggle", this.onToggleTap, this);

 处理的时候

    private onToggleTap(toggle: cc.Toggle) {
        switch (toggle) {
            case this.toggle1:
                
                break;
            case this.toggle2:
              
                break;
            case this.toggle3:
               
                break;
        }
    }

二 tween基本用法

无限循环,让一个方块rect不停的旋转。

cc.tween(this.rect).repeatForever(
       cc.tween(this.rect).to(2, { angle: 360 }).to(0, { angle: 0 })
 ).start();

 停止目标所有tween,以下三个最终都是调用removeAllActionsFromTarget,所以是等效的。不过cocos源码里有cc.Tween.stopAllByTarget,但是用起来却提示找不到这个function。

cc.director.getActionManager().removeAllActionsFromTarget(this.node);

this.node.stopAllActions();

cc.Tween.stopAllByTarget(this.node);

 缓动,设置目标角度为0,并且缓动quadInOut到360度。没找到quadInOut的常量,只能硬写个字符串。  

cc.tween(this.node).set({ angle: 0 }).to(1, { angle: 360 }, { easing: 'quadInOut' }).call(() => {}).start();  

 重复指定的次数

cc.tween(this).repeat(1,
            cc.tween(this).to(1, { y: 420 }).call(() => { this.node.y = 0 })
).to(1, { y: 10 });

 三 按钮点击监听的e

this.node.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
this.node.on("click", this.onClick, this);

 两种事件的传递的参数e

private onTouchEnd(e:cc.Event.EventTouch){
    console.log("touchend:", e);
}

private onClick(e:cc.Button){
    console.log("click:", e);
}

四 按钮或图片置灰

 按钮置灰可以勾选Enable Auto Gray Effect

 设置按钮interactable = false则图片置灰

btn.interactable = false;  

 可以直接设置某个图片置灰

let sp:cc.Sprite;
sp.setMaterial(0, cc.Material.createWithBuiltin("2d-gray-sprite", 0));

 五  schedule无限执行

this.schedule(() => { }, 1, cc.macro.REPEAT_FOREVER);

六 取有效小数位

var num: number = 123.456;
cc.log(num.toPrecision(2));    //1.2e+2
cc.log(num.toFixed(2));        //123.46
cc.log( num.toExponential(2)); //1.23e+2

七 贝塞尔曲线

2秒钟从坐标(0,0)曲线运动到(10,10),再运动到(0,20)

let startPos = cc.v2(0,0);        //起始点
let controlPos = cc.v2(10,10); //拐点
let endPos = cc.v2(0,20);        //终点
var action = cc.bezierTo(2, [startPos,controlPos,endPos]);
this.node.runAction(action);

八 spine动画的事件

var s: sp.Skeleton;
s.setAnimation(0, "run", false);  //在track0播放动画"run",不循环
s.setCompleteListener((trackEntry, loopCount) => {
       let name = trackEntry.animation.name;  //完成的动画名
});
s.setEventListener((trackIndex, event) => {
        let name = event.data.name;  //触发的事件名
});
s.setSkin("01");  //替换皮肤

九 文本的颜色

 容易忘记的是 new cc.Color.fromHEX...

let richText: cc.RichText = new cc.RichText();
richText.node.color = new cc.Color().fromHEX("#00fe18");
richText.string = "<outline color=#000000 width=1><color=#ffffff>文本</color></outline>";

十 Date

月份要+1,比如四月,getMonth返回的是3。

 let date:Date = new Date();
cc.log(date.getTime());     //1617242699764  1970 年 1 月 1 日至今的毫秒数
cc.log(date.getFullYear()); //2021  2021年
cc.log(date.getMonth()+1);  //4     四月
cc.log(date.getDate());     //1     1日
cc.log(date.getHours());    //10    早上10点
cc.log(date.getMinutes());  //6     6分
cc.log(date.getSeconds());  //59    59秒
cc.log(date.getDay());      //4 星期四

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos分层是指在Cocos游戏引擎中,将游戏场景或游戏对象按照不同的层级进行管理和渲染的一种技术。通过分层可以实现游戏元素的层次感和深度感,同时也方便了游戏对象的管理和控制。 在Cocos中,可以通过以下方式进行分层: 1. 场景层(Scene Layer):场景层是最底层的分层,用于管理整个游戏场景。一个游戏通常包含多个场景,每个场景都有自己的层级结构。场景层可以包含多个其他类型的层,如UI层、游戏对象层等。 2. UI层(UI Layer):UI层用于管理游戏中的用户界面元素,如按钮、标签、进度条等。UI层通常位于最上方,不受游戏对象的渲染顺序影响。通过UI层可以实现游戏中的菜单、设置界面等功能。 3. 游戏对象层(Game Object Layer):游戏对象层用于管理游戏中的各种游戏对象,如角色、敌人、道具等。游戏对象层可以根据需要创建多个,每个对象层可以控制不同类型的游戏对象的渲染顺序和行为。 4. 特效层(Effect Layer):特效层用于管理游戏中的特效效果,如爆炸、闪电等。特效层通常位于游戏对象层之上,可以通过特效层实现游戏中的动态效果和视觉冲击。 5. 背景层(Background Layer):背景层用于管理游戏中的背景元素,如地图、背景图片等。背景层通常位于最底部,用于呈现游戏的背景环境。 以上是Cocos分层的一些常见方式,通过合理的分层可以提高游戏的性能和可维护性,同时也能够更好地控制游戏元素的显示和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值