zoukankan      html  css  js  c++  java
  • Cocos Creator 组件-动作Action

    由于面板显示不支持嵌套,自己也没有去研究inspector面板元素的显示控制,CocosCreator是用vue编写的,本人正在学习vue,后期考虑扩展下Inspector,官方链接:https://docs.cocos.com/creator/manual/zh/extension/extends-inspector.html

    常用Action面板化:(只要放在脚本文件目录下就可以了)

    Panel_Action.js

    var Panel_Action_Type = cc.Enum({
        Panel_None: 0,
        Panel_Sequence: 1,
        Panel_Repeat: 2,
        Panel_RepeatForever: 3,
        Panel_Spawn: 4,
        Panel_DelayTime: 5,
        Panel_MoveTo: 6,
        Panel_MoveBy: 7,
        Panel_RotateTo: 8,
        Panel_RotateBy: 9,
        Panel_ScaleTo: 10,
        Panel_ScaleBy: 11,
        Panel_FadeIn: 12,
        Panel_FadeOut: 13,
        Panel_FadeTo: 14,
        Panel_Blink : 15,
        Panel_JumpTo:16,
        Panel_JumpBy: 17,
        Panel_BezierTo: 18,
        Panel_BezierBy: 19,
        Panel_SkewTo: 20,
        Panel_SkewBy: 21,
        Panel_TintTo: 22,
        Panel_TintBy: 23,
    });
    
    var Panel_Action = cc.Class({
        name: "Panel_Action",
        properties: () => ({
            actionType: {
                default: Panel_Action_Type.Panel_None,
                type: Panel_Action_Type,
                displayName: "动作类型",
            },
    
            action_sequence: {
                default: null,
                type: require("PanelAction").Panel_Sequence,
                displayName: "顺序动作",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_Sequence;
                }
            },
    
            action_repeat: {
                default: null,
                type: require("PanelAction").Panel_Repeat,
                displayName: "重复动作",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_Repeat;
                }
            },
    
            action_repeatForever: {
                default: null,
                type: require("PanelAction").Panel_RepeatForever,
                displayName: "永久重复动作",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_RepeatForever;
                }
            },
    
            action_spawn: {
                default: null,
                type: require("PanelAction").Panel_Spawn,
                displayName: "并行动作",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_Spawn;
                }
            },
    
            action_delayTime: {
                default: null,
                type: require("PanelAction").Panel_DelayTime,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_DelayTime;
                }
            },
    
            action_moveTo: {
                default: null,
                type: require("PanelAction").Panel_MoveTo,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_MoveTo;
                }
            },
    
            action_moveBy: {
                default: null,
                type: require("PanelAction").Panel_MoveBy,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_MoveBy;
                }
            },
    
            action_rotateTo: {
                default: null,
                type: require("PanelAction").Panel_RotateTo,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_RotateTo;
                }
            },
    
            action_rotateBy: {
                default: null,
                type: require("PanelAction").Panel_RotateBy,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_RotateBy;
                }
            },
    
            action_scaleTo: {
                default: null,
                type: require("PanelAction").Panel_ScaleTo,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_ScaleTo;
                }
            },
    
            action_scaleBy: {
                default: null,
                type: require("PanelAction").Panel_ScaleBy,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_ScaleBy;
                }
            },
    
            action_fadeIn: {
                default: null,
                type: require("PanelAction").Panel_FadeIn,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_FadeIn;
                }
            },
    
            action_fadeOut: {
                default: null,
                type: require("PanelAction").Panel_FadeOut,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_FadeOut;
                }
            },
    
            action_fadeTo: {
                default: null,
                type: require("PanelAction").Panel_FadeTo,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_FadeTo;
                }
            },
    
            action_blink: {
                default: null,
                type: require("PanelAction").Panel_Blink,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_Blink;
                }
            },
    
            action_jumpTo: {
                default: null,
                type: require("PanelAction").Panel_JumpTo,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_JumpTo;
                }
            },
    
            action_jumpBy: {
                default: null,
                type: require("PanelAction").Panel_JumpBy,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_JumpBy;
                }
            },
    
            action_bezierTo: {
                default: null,
                type: require("PanelAction").Panel_BezierTo,
                tooltip: "按贝赛尔曲线轨迹移动到目标位置",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_BezierTo;
                }
            },
    
            action_bezierBy: {
                default: null,
                type: require("PanelAction").Panel_BezierBy,
                tooltip: "按贝赛尔曲线轨迹偏移",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_BezierBy;
                }
            },
    
            action_skewTo: {
                default: null,
                type: require("PanelAction").Panel_SkewTo,
                tooltip: "偏斜到目标角度",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_SkewTo;
                }
            },
    
            action_skewBy: {
                default: null,
                type: require("PanelAction").Panel_SkewBy,
                tooltip: "偏斜指定的角度",
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_SkewBy;
                }
            },
    
            action_tintTo: {
                default: null,
                type: require("PanelAction").Panel_TintTo,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_TintTo;
                }
            },
    
            action_tintBy: {
                default: null,
                type: require("PanelAction").Panel_TintBy,
                visible: function() {
                    return this.actionType == Panel_Action_Type.Panel_TintBy;
                }
            },
        }),
    });
    
    module.export = Panel_Action;
    

    使用Action的组件(拖到需要做动作的节点上)

    PanelAction.js

    var Panel_ActionInterval = cc.Class({
        name: "Panel_ActionInterval",
        properties: {
            
        },
    });
    
    
    var Panel_Sequence = cc.Class({
        name: "Panel_Sequence",
        extends: Panel_ActionInterval,
        properties: () => ({
            actionArray: [require("Panel_Action")],
        }),
    });
    
    
    var Panel_Repeat = cc.Class({
        name: "Panel_Repeat",
        extends: Panel_ActionInterval,
        properties: () => ({
            action: require("Panel_Action"),
            times: {
                default: 1,
                type: cc.Integer,
                displayName: "次数",
                min: 1,
            },
        }),
    });
    
    
    var Panel_RepeatForever = cc.Class({
        name: "Panel_RepeatForever",
        extends: Panel_ActionInterval,
        properties: () => ({
            action: require("Panel_Action"),
        }),
    });
    
    
    var Panel_Spawn = cc.Class({
        name: "Panel_Spawn",
        extends: Panel_ActionInterval,
        properties: () => ({
            actionArray: [require("Panel_Action")],
        }),
    });
    
    
    var Panel_DelayTime = cc.Class({
        name: "Panel_DelayTime",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
        },
    });
    
    
    var Panel_MoveTo = cc.Class({
        name: "Panel_MoveTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "目标坐标值",
            },
        },
    });
    
    
    var Panel_MoveBy = cc.Class({
        name: "Panel_MoveBy",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "位移偏移量",
            },
        },
    });
    
    
    var Panel_RotateTo = cc.Class({
        name: "Panel_RotateTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "目标旋转值",
            },
        },
    });
    
    
    var Panel_RotateBy = cc.Class({
        name: "Panel_RotateBy",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "旋转偏移量",
            },
        },
    });
    
    
    var Panel_ScaleTo = cc.Class({
        name: "Panel_ScaleTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "目标缩放值",
            },
        },
    });
    
    
    var Panel_ScaleBy = cc.Class({
        name: "Panel_ScaleBy",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "缩放偏移量",
            },
        },
    });
    
    
    var Panel_FadeIn = cc.Class({
        name: "Panel_FadeIn",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
        },
    });
    
    
    var Panel_FadeOut = cc.Class({
        name: "Panel_FadeOut",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
        },
    });
    
    
    var Panel_FadeTo = cc.Class({
        name: "Panel_FadeTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            opacity: {
                default: 0,
                type: cc.Integer,
                displayName: "透明值",
                min: 0,
                max: 255,
            },
        },
    });
    
    
    var Panel_Blink = cc.Class({
        name: "Panel_Blink",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            blinks: {
                default: 1,
                type: cc.Integer,
                displayName: "次数",
                min: 1,
            },
        },
    });
    
    
    var Panel_JumpTo = cc.Class({
        name: "Panel_JumpTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "目标坐标值",
            },
            height: {
                default: 0,
                type: cc.Float,
                displayName: "高度",
            },
            jumps: {
                default: 1,
                type: cc.Integer,
                displayName: "次数",
                min: 1,
            },
        },
    });
    
    
    var Panel_JumpBy = cc.Class({
        name: "Panel_JumpBy",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "坐标偏移量",
            },
            height: {
                default: 0,
                type: cc.Float,
                displayName: "高度",
            },
            jumps: {
                default: 1,
                type: cc.Integer,
                displayName: "次数",
                min: 1,
            },
        },
    });
    
    
    var Panel_BezierTo = cc.Class({
        name: "Panel_BezierTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2s: {
                default: [],
                type: cc.Vec2,
                displayName: "所有坐标",
            },
        },
    });
    
    
    var Panel_BezierBy = cc.Class({
        name: "Panel_BezierBy",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2s: {
                default: [],
                type: cc.Vec2,
                displayName: "所有坐标偏移量",
            },
        },
    });
    
    
    var Panel_SkewTo = cc.Class({
        name: "Panel_SkewTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "目标偏斜角度值",
            },
        },
    });
    
    
    var Panel_SkewBy = cc.Class({
        name: "Panel_SkewBy",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            vec2: {
                default: new cc.Vec2(),
                displayName: "偏斜角度偏移量",
            },
        },
    });
    
    
    var Panel_TintTo = cc.Class({
        name: "Panel_TintTo",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            color: {
                default: new cc.Color,
                displayName: "目标颜色值"
            }
        },
    });
    
    
    var Panel_TintBy = cc.Class({
        name: "Panel_TintBy",
        extends: Panel_ActionInterval,
        properties: {
            duration: {
                default: 0,
                type: cc.Float,
                displayName: "时长",
                min: 0,
            },
            color: {
                default: new cc.Color,
                displayName: "颜色值偏移量"
            }
        },
    });
    
    
    
    
    
    
    cc.Class({
        extends: cc.Component,
    
        properties: {
            //baseAction: [Panel_Action],
            baseAction2: require("Panel_Action"),
            //baseAction3: Panel_Action,
            //baseAction4: Panel_TintTo,
            //baseAction5: Panel_TintTo,
        },
    
        // LIFE-CYCLE CALLBACKS:
    
        // onLoad () {},
    
        start () {
            
        },
    
        // update (dt) {},
    });
    
    
    module.export = {
        Panel_ActionInterval : Panel_ActionInterval,
        Panel_Sequence : Panel_Sequence,
        Panel_Repeat : Panel_Repeat,
        Panel_RepeatForever : Panel_RepeatForever,
        Panel_Spawn : Panel_Spawn,
        Panel_DelayTime : Panel_DelayTime,
        Panel_MoveTo : Panel_MoveTo,
        Panel_MoveBy : Panel_MoveBy,
        Panel_RotateTo : Panel_RotateTo,
        Panel_RotateBy : Panel_RotateBy,
        Panel_ScaleTo : Panel_ScaleTo,
        Panel_ScaleBy : Panel_ScaleBy,
        Panel_FadeIn : Panel_FadeIn,
        Panel_FadeOut : Panel_FadeOut,
        Panel_FadeTo : Panel_FadeTo,
        Panel_Blink : Panel_Blink,
        Panel_JumpTo : Panel_JumpTo,
        Panel_JumpBy : Panel_JumpBy,
        Panel_BezierTo : Panel_BezierTo,
        Panel_BezierBy : Panel_BezierBy,
        Panel_SkewTo : Panel_SkewTo,
        Panel_SkewBy : Panel_SkewBy,
        Panel_TintTo : Panel_TintTo,
        Panel_TintBy : Panel_TintBy,
    }
    

    文章开头就说明了,暂时官方默认的面板没法支持嵌套定义的组件,先记录,后期再扩展inspector。
    写成组件,主要是方便非程序的编辑人员就可以制作动画,虽然官方也提供了动作编辑器面板

  • 相关阅读:
    GridView只显示日期问题
    自定义一个选择日期的用户控件
    母版页所带来的路径问题
    C#之旅(一): 泛型 和IComparable、IComparer
    使用HttpWebRequest来秒杀
    NameValueCollection Dictionary区别
    在C#中使用代理的方式触发事件 (委托和事件 )(二)(转)
    SQL2005语句实现行转列,列转行
    值类型和引用类型的区别?(转)
    2010年年终总结
  • 原文地址:https://www.cnblogs.com/lyonwu/p/10369162.html
Copyright © 2011-2022 走看看