【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

这篇具有很好参考价值的文章主要介绍了【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 开发文档地址
    https://docs.cocos.com/creator/2.4/manual/zh/

  2. 挂载脚步
    右键新建脚本
    【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
    【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

  3. 脚本解释
    把类名和脚本名改为一致 【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
    允许其他脚本调用

    export default 
    

    text优先使用面板的值,property去掉则不在面板上显示

    @property//去掉则不在面板上显示
    text: string = 'hello';
    

    打印输出

    console.debug('调用');
    
  4. 生命周期函数解释

    //初始化调用,第一个被调用
    onLoad () {
        console.debug('调用');
    }
    //启用脚本调用,在onLoad和start之间执行,会多次调用
    onEnable() {
        
    }
    //初始化调用,第二个被调用
    start () {
    
    }
    
    //每帧开始调用,dt执行时间
    update (dt) {}
    
    //每帧结束调用
    lateUpdate(dt) {
        
    }
    //禁用脚本调用
    onDisable() {
        
    }
    
    //销毁时调用
    onDestroy() {
        
    }
    
  5. 节点的使用

    start () {
        //获取子字节点
        let a = this.node.children[0];
        //根据子节点名称获取节点
        this.node.getChildByName('abc');
        //通过路径查找节点
        cc.find('Canvas/Main Camera')
        //获取父节点
        this.node.getParent();
        //设置一个父节点
        this.node.setParent(a);
        //移除所有子节点
        this.node.removeAllChildren();
        //移除某个节点
        this.node.removeChild(a);
        //从父节点移除掉,我删我自己
        this.node.removeFromParent();
    
        //获取位置
        this.node.x;
        this.node.y
        //设置位置
        this.node.setPosition(3,4);
        this.node.setPosition(cc.v2(3,4));
        //旋转
        this.node.rotation;
        //缩放
        this.node.scale;
        //锚点
        this.node.anchorX;
        //设置颜色
        this.node.color = cc.Color.RED;
    
        //节点开关
        this.node.active = false;
        //组件开关
        this.enabled = false;
    
        //按类型获取组件(填写组件类型)
        let sprite = this.getComponent(cc.Sprite);
        //从子集按类型获取组件
        this.getComponentInChildren(cc.Sprite);
    
    	//创建节点
        let node = new cc.Node("New");
        //添加组件(创建一个精灵组件)
        node.addComponent(cc.Sprite);
    }
    
    
  6. 预设体

  • 拖拽新增预设体
    【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

  • 用代码渲染预设体
    【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
    脚本内容

    @ccclass
    export default class Test extends cc.Component {
    
        @property(cc.Label)
        label: cc.Label = null;
    
        @property//去掉则不在面板上显示
        text: string = 'hello';
    
    	//定义预设体
        @property(cc.Prefab)
        pre:cc.Prefab = null;
    
        // LIFE-CYCLE CALLBACKS:
    
        //初始化调用,第一个被调用
        onLoad () {
            console.debug('调用');
    
            //实例化预设体
            let node = cc.instantiate(this.pre)
            //设置父节点,不设置父节点不会显示
            node.setParent(this.node);
        }
    }
    
    1. 资源动态加载(属于异步加载,不影响主体程序代码的运行)
    • 新建assets/resource资源文件,名称一定不能错
      【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

    • 将要加载的图片资源文件放在resources里,记得改为精灵类型
      【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

    • 编写脚本实现动态加载

      start () {
          var that = this;
          //旧的方式,2.4以上已经不推荐使用,可能之后会废除,不建议使用
          cc.loader.loadRes("test/land", cc.SpriteFrame, function(err, sp:cc.SpriteFrame){
              that.getComponent(cc.Sprite).spriteFrame = sp;
          });		
           //新版本使用
         	cc.resources.load("test/land", cc.SpriteFrame, function(err, sp:cc.SpriteFrame) {
              that.getComponent(cc.Sprite).spriteFrame = sp;
          });
      	
      	//加载远程图片
          cc.loader.load({url:item.avatarUrl,type:'jpg'},function(err,tex){
               that.getComponent(cc.Sprite).spriteFrame  = new cc.SpriteFrame(tex);
           });
      }
      
      
    • 动态加载某个图集

      //动态加载某个图集
      cc.resources.load("test/land1", cc.SpriteAtlas, function(err, atlas:cc.SpriteAtlas){
          that.getComponent(cc.Sprite).spriteFrame = atlas.getSpriteFrame("hero1");
      });
      

      【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

  1. 场景
  • 新建场景
    【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

  • ctrl+s保存场景为game1,game2,放在assets/scene目录下,双击可打开切换
    【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)

  • 加载场景,切换场景

    //直接切换场景
    cc.director.loadScene("game2", function(){
       //当前已经加载到新的场景了
    });
    
    //预加载,用在一些比较大的场景时
    cc.director.preloadScene("game2",function(){
       //这个场景已经加载到内存了,但是还没有用
       cc.director.loadScene("game2");
    })
    
  • 常驻节点,比如游戏游玩时长的统计

    //添加常驻的节点,所有场景都有,换场景也不会销毁,this.node 表示当前节点
    cc.game.addPersistRootNode(this.node);
    
    //移除常驻节点
    cc.game.removePersistRootNode(this.node)
    
  1. 鼠标事件和触摸事件

    //绑定事件
    this.node.on(cc.Node.EventType.MOUSE_DOWN, function(event){
       console.debug('鼠标按下啦!!');
       
       //获取当前点击的位置
       event.getLocation()
       event.getLocationX()
       event.getLocationY()
       
       if(event.getButton() == cc.Event.EventMouse.BUTTON_RIGHT){
           console.debug('点击了鼠标右键!!');
       }
    })
    
    //取消绑定事件
    this.node.off(cc.Node.EventType.MOUSE_DOWN,function(event){
    	//用法同上
    });
    
    //触摸事件
    this.node.on(cc.Node.EventType.MOUSE_DOWN, function(event){
        //按触摸id判断有几个手指
        console.debug('触摸' + event.getID());
    })
    

    鼠标事件在桌面平台才会触发,系统提供的事件类型如下:

    枚举对象定义 对应的事件名 事件触发的时机
    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)的重要 API 如下(cc.Event 标准事件 API 之外):

    函数名 返回值类型 意义
    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

    触摸事件类型和事件对象
    触摸事件在移动平台和桌面平台都会触发,这样做的目的是为了更好得服务开发者在桌面平台调试,只需要监听触摸事件即可同时响应移动平台的触摸事件和桌面端的鼠标事件。系统提供的触摸事件类型如下:

    枚举对象定义 对应的事件名 事件触发的时机
    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 如下(cc.Event 标准事件 API 之外):

    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 属性
  2. 键盘事件

    /*
     * KEY_DOWN:按下
     * KEY_UP:松开
     */
    cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, function(event){
        if(event.keyCode == cc.macro.KEY.q){
            console.debug('你按下了q键!!');
        }
    })
    
  3. 自定义事件

    let that = this;
    //触摸事件
    this.node.on(cc.Node.EventType.MOUSE_DOWN, function(event){
        //触发自定义事件,第一种
        that.node.emit('myEvent');
        //触发自定义事件,第二种,true控制开启事件冒泡
        that.node.dispatchEvent(new cc.Event.EventCustom("myEvent", true));
    })
    
    //监听自定义事件
    this.node.on('myEvent', function(event){
        console.debug('自定义事件');
    })
    
  4. 碰撞检测
    添加碰撞组件,支持三种类型,分别是方形,圆形,多边形,勾选editing可进行拖动编辑
    【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)
    开启碰撞检测文章来源地址https://www.toymoban.com/news/detail-467072.html

    //初始化调用
    start () {
       //开启碰撞检测
       cc.director.getCollisionManager().enabled = true;
    }
    
    /**
     * 当碰撞产生的时候调用
     * @param  {Collider} other 产生碰撞的另一个碰撞组件
     * @param  {Collider} self  产生碰撞的自身的碰撞组件
     */
    onCollisionEnter(other, self){
        //获取碰撞组件的tag,来判断碰到的是那个物体
        console.log('碰撞发生' + other.tag);
    }
    
    /**
     * 当碰撞产生后,碰撞结束前的情况下,每次计算碰撞结果后调用
     * @param  {Collider} other 产生碰撞的另一个碰撞组件
     * @param  {Collider} self  产生碰撞的自身的碰撞组件
     */
    onCollisionStay(other, self) {
        console.log('碰撞持续');
    }
    
    /**
     * 当碰撞结束后调用
     * @param  {Collider} other 产生碰撞的另一个碰撞组件
     * @param  {Collider} self  产生碰撞的自身的碰撞组件
     */
    onCollisionExit(other, self) {
        console.log('碰撞结束');
    }
    

到了这里,关于【cocos 2d微信小游戏开发教程】基础使用笔记分享(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Cocos 3d】从零开始自制3d出租车小游戏

    本文很长,建议收藏食用。 课程来源: 游戏开发教程 | 零基础也可以用18堂课自制一款3D小游戏 | Cocos Creator 3D 中文教程(合集)p1~p6 简介: 资源下载:https://github.com/cocos-creator/tutorial-taxi-game 适合学习人群:本教程假定你对编程有一定的了解,ts,js 学习过其中之一。 如果不

    2024年02月02日
    浏览(55)
  • Unity微信小游戏使用微信云开发记录

    最近项目上架微信小游戏,首先使用了微信官方sdk转成微信小游戏,官方地址如下: https://github.com/wechat-miniprogram/minigame-unity-webgl-transform 官方给了各种指导,虽然都有但是都不太精哈哈 因为要做排行榜,云存档,而我司没服务器,那只能用微信云开发了。具体开通啥的初始

    2023年04月09日
    浏览(54)
  • Unity——2D小游戏笔记整理

    【每日一句:清晨和夜晚都请用尽全力去生活】 目录 一、环境搭建 二、人物 三、相机跟随人物移动 四、平铺精灵 五、血条跟随敌人行走 六、脚本逻辑 【玩家行走方法】 【玩家跳跃方法】 【改变玩家血量值方法】 【创建玩家子弹方法】 【主角血量,改变血条遮罩】 【敌

    2024年02月09日
    浏览(56)
  • Unity-微信小游戏上架流程-个人开发者

    写在前面         微信上架流程个人认为比较繁琐,而且严格,时间跨度长。在微信平台上架小游戏,实际上相当于将一个Unity WebGL的工程上架到微信小程序,只不过将微信小程序的类型设置成小游戏,使用微信专门的打包工具打包导出,并且使用微信专门的调试工具进行

    2024年04月17日
    浏览(44)
  • 微信小游戏云开发——云函数创建、应用、相关问题

    目录 Unity开发微信小游戏 Unity中将游戏开发完成后,如果需要将用户在游戏中的相关数据永久存储,可能就需要用到服务器,而微信开发者工具中有“云开发”选项,此文主要讲解使用云开发时遇到的一些问题及解决方法 阐述的内容 一、云函数如何创建 二、编写云函数,上

    2023年04月17日
    浏览(79)
  • Unity实现2D小游戏Sunny Land

    Unity实现2D小游戏FirstGame2D(SunnyLand)-Unity3D文档类资源-CSDN下载 本游戏为作者的第一个实验的2D小游戏 实现效果: (1)简单的UI界面以及触发按钮、滑动按钮事件 (2)通过按钮与按键实现场景的切换 (3)通过代码实现动画效果的切换(跳跃、蹲下等) (4)碰撞体以及触发器

    2024年02月08日
    浏览(70)
  • 微信小游戏开发之unity-精灵的创建动画和操作移动

    我们的目标是通过unity开发微信小游戏! 这是第一篇正式实战开发文章,将会很详细介绍每一个步骤和代码。 废话不多说直接操作! 由于目标开发游戏是2D小游戏,我们选择2D核心模板. 我们的目标是开发微信小游戏所以我们需要修改setting,选择运行平台选择转换 WebGL ,刚开

    2024年01月16日
    浏览(68)
  • Python基础教程——贪吃蛇、连连看小游戏(完整版,附源码)

    1. 案例介绍 贪吃蛇是一款经典的益智游戏,简单又耐玩。该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长。 通过上下左右方向键控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬

    2024年02月04日
    浏览(54)
  • Cocos Creator小游戏-文字斗争(H5、小程序)益智类 项目展示+完整项目源码

    文字斗争(H5、小程序)益智类 项目展示+完整项目源码 玩家有着自己的战场,可以作为进攻方去挑战其他战场,也可以作为防守方抵御其他玩家的进攻。 玩家可以挑战游戏里设置的各个关卡,提高自己的指挥能力和布局能力,最终可以战胜其他玩家的同时能够不被其他玩家

    2024年02月08日
    浏览(71)
  • Cocos Creator小游戏-2048(PC、安卓、H5)益智类 项目展示+完整项目源码

    Cocos Creator小游戏-2048 在棋盘上,每次会增加一个 小 动物,你可以选择四个方向 滑动 ,然后 小 动物会按方向移动,遇到相同的 小 动物就会 合并,看谁合并的最多。 1 .初始化格子小动物的位置。 2.手势滑屏移动屏幕中的小动物。 3.自动寻找棋盘中没有小动物的格子,自动

    2024年02月12日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包