1. 富文本(RichText)

    优点:自定义颜色,大小,描边,还能加图片。对于复杂的文本表现力更好。
    缺点:cocos的富文本是由Label组件拼装实现的。低版本会打断合批。Label太多导致卡顿。

    常用

    // 换行符
    <br/>
    // 加粗
    <b> </b>
    // 字体颜色
    <color=#FFFFFF> </color>
    // 描边颜色及宽度
    <outline color=#000000 width=2> </outline>
    // 图片,Image Atlas需先绑定图集,还可以绑定点击事件
    <img src='图片名字' click='点击方法名'/>
    // 字体大小
    <size=20>字体大小</size>
    //斜体
    <i>斜体</i>
    //下划线
    <u>下划线</u>
    //点击事件 记得先挂载脚本,test为方法名
    <on click="test">点击</on>
    
  2. 遮罩
    用例:圆形头像
    在父级节点加渲染组建 Mask

  3. 适配
    加ui组件Widget

  4. 存储和读取用户数据

  • 存储数据

    cc.sys.localStorage.setItem('gold', 100);
    

    对于复杂的对象数据,我们可以通过将对象序列化为 JSON 后保存:

    userData = {name: 'Tracer',level: 1,gold: 100
    };cc.sys.localStorage.setItem('userData', JSON.stringify(userData));
    
  • 读取数据

    cc.sys.localStorage.getItem(key)
    

    读取json数据

    var userData = JSON.parse(cc.sys.localStorage.getItem('userData'));
    
  • 清除数据
    移除一个数据

    cc.sys.localStorage.removeItem('name')
    

    清空数据

    cc.sys.localStorage.clear()
    
  • 对象和json数据存储及处理

    const {ccclass, property} = cc._decorator;class Person{id: number;name: string;wugong: string[];
    }
    @ccclass
    export default class Wuli extends cc.Component {start(){let person = new Person();person.id = 10;person.name = '小王';person.wugong = ['降龙十八掌', '独孤九剑'];//对象转jsonlet json = JSON.stringify(person);//存储cc.sys.localStorage.setItem('info', json);//json转对象let person2: Person = Object.assign(new Person(), JSON.parse(json));}
    }
    
  1. 网络请求

    let url = 'http://xxx.com/api?name=xxx';
    //请求
    let request = cc.loader.getXMLHttpRequest();
    request.open('GET', url, true);//true开启异步请求
    request.onreadystatechange = () => {//请求结束后,获取数据if(request.readyState == 4 && request.status == 200){console.debug('请求完成');console.debug(request.responseText);//内容}
    }
    request.send();//发送请求
    
  2. 用代码自定义一个播放Animation动画播放组件

    const {ccclass, property} = cc._decorator;
    @ccclass
    export default class MyAnimation extends cc.Component {//每秒播放速度@propertyspeed: number = 0.1;//播放帧数组@property([cc.SpriteFrame])sprites: cc.SpriteFrame[] = [];//是否播放动画@propertyisPlay: boolean = false;//当前播放帧index:number = 0;//计时器timer:number = 0;start (){}update (dt){if(this.isPlay){//播放动画//计时器增加this.timer += dt;if(this.timer > this.speed){this.timer =0;//切换帧 012 012 012this.index++;if(this.index >= this.sprites.length){this.index = 0;}//更换帧图片this.getComponent(cc.Sprite).spriteFrame = this.sprites[this.index];}}}//开始play(){this.isPlay = true;}//停止stop(){this.isPlay = false;}
    }
    

    调用

    import MyAnimation from "./MyAnimation";const {ccclass, property} = cc._decorator;@ccclass
    export default class NewClass extends cc.Component {start () {this.getComponent(MyAnimation).play();}
    }
    
  3. 自定义封装一个玩家控制器

    const {ccclass, property} = cc._decorator;//写个单例 封装键盘控制玩家移动
    export default class Input{private static instance: Input = null;//水平轴horizontal: number = 0;//垂直轴vertical: number = 0;static get Instance(){if(this.instance = null){this.instance = new Input();}return this.instance;}constructor(){//键盘按下cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,(event)=>{if(event.keyCode == cc.macro.KEY.w){this.vertical = 1;} else if(event.keyCode == cc.macro.KEY.s){this.vertical = -1;}if(event.keyCode == cc.macro.KEY.a){this.horizontal = -1;}else if(event.keyCode == cc.macro.KEY.d){this.horizontal = 1;}});//键盘抬起 归0cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP,(event)=>{if(event.keyCode == cc.macro.KEY.w){this.vertical = 0;} else if(event.keyCode == cc.macro.KEY.s){this.vertical = 0;}if(event.keyCode == cc.macro.KEY.a){this.horizontal = 0;}else if(event.keyCode == cc.macro.KEY.d){this.horizontal = 0;}});}
    }
    

    调用

    import Input from "./Input";const {ccclass, property} = cc._decorator;@ccclass
    export default class Player extends cc.Component {//速度speed: number = 20;start () {}update (dt) {//移动this.node.x += this.speed * dt * Input.Instance.horizontal;this.node.y += this.speed * dt * Input.Instance.vertical;}
    }
  4. 摄像头跟随玩家移动

    update(dt){//player为玩家 减去的是屏幕一般偏差的距离if(this.player != null){cc.Camera.main.node.x = this.player.x-240;cc.Camera.main.node.y = this.player.y-160;}
    }
    
  5. 回调
    小鸟预设体绑定脚本

    const {ccclass, property} = cc._decorator;@ccclass
    export default class Bird extends cc.Component {//游戏结束回调over: Function;//加分回调add: Function;start () {//结束this.over();//加分this.add();}update (dt) {}
    }
    

    其他地方使用

    import Bird from "./Bird";const {ccclass, property} = cc._decorator;@ccclass
    export default class Test extends cc.Component {//绑定小鸟预设体@property(cc.Prefab)birdPre: cc.Prefab;score: number = 0;start () {//创建小鸟let bird = cc.instantiate(this.birdPre);//设置父物体bird.setParent(this.node);//加分回调bird.getComponent(Bird).add = ()=> {this.score += 100;}//游戏结束回调bird.getComponent(Bird).over = ()=> {console.debug('游戏结束');}}update (dt) {}
    }
    

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

  1. 微信小游戏开发教程-2D游戏原理讲解

    微信小游戏开发教程-2D游戏原理讲解 原理 为了更加形象的描述,这里先上一张图: 背景 a. 首先,我们看到背景好像是一张无限长的图片在向下移动.实际则不然,这是一张顶部和底部刚好重叠的图片.这是一种 ...

  2. 微信小游戏开发零基础教程(一)-CocosCreator

    微信小游戏零基础教程(一)-CocosCreator 最终效果预览 准备工作 创建工程 测试第一个场景 最终效果预览 本教程最后制作的游戏效果: 准备工作 下载 微信开发者工具 最新版->下载地 ...

  3. 微信小游戏开发教程-游戏实现1

    微信小游戏开发教程-游戏实现1 概述 微信开发者工具官方提供一个飞机大战的游戏Demo,这里我们不再使用这个demo,我们以FlappyBird为例,为了让读者更加容易理解. 源码 https://g ...

  4. 微信小游戏开发教程-游戏实现3

    微信小游戏开发教程-游戏实现3 对象池 由于游戏过程中会创建很多临时对象,这些对象很快又不再使用,垃圾回收器也能帮我们主动回收这部分垃圾,但是回收时间不可控制,同时增大了创建对象的开销,所以我们使用对 ...

  5. 微信小游戏开发教程-游戏实现2

    微信小游戏开发教程-游戏实现2 绘制地面 类似于绘制背景,读者自行完成代码.src/runtime/land.js 简易View系统 坐标布局对于复杂的页面来说维护相当困难,因此这里我们引入布局的概念 ...

  6. 微信小游戏开发教程-新建项目

    微信小游戏开发教程-新建项目 1. 新建小游戏项目 我们这回使用空项目,不要勾选使用模板创建. 2. 添加小游戏必要文件 项目创建好以后我们发现缺少一些必要的文件,我们手动添加即可: game.jso ...

  7. 微信小程序开发教程(基础篇)8-数据绑定下

    教程接上篇,当需要展示一组数据时,可以使用wx:for //.wxml <view wx:for="{{array}}">{{index}}: {{item.messa ...

  8. Unity3d C#开发微信小游戏音频/音效播放问题解决过程分享

    广告 通过一段时间的基于minigame-unity-webgl-transform插件的开发,算是稍微完整的一小个游戏已经制作完成,具体大家可以扫码体验一下: 感谢支持!! 前言 之前我写了一篇u3 ...

  9. 解决cocos creator微信小游戏本地缓存文件超过限制问题

    cocos creator微信小游戏开发,如果游戏包内资源超过包体大小限制,那么可以通过远程加载的方式加载资源(代码脚本文件除外). 小游戏在迭代过程中因为缓存资源的积累,在加载资源的时候会出现超过缓 ...

最新文章

  1. HDU ACM 1065 I Think I Need a Houseboat
  2. 判断元素是否在ndarray_暨南大学药学院考研~手性的判断与相关介绍
  3. c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
  4. libpcre.so.1 cannot be found
  5. android 默认焦点设置_Android界面设计基础:控件焦点4个步骤
  6. Linux-文件目录命令
  7. SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  8. c 程序设计语言第一次作业,重大2017年C++程序设计语言第一次作业(含答案).doc...
  9. msdia140.dll 已加载,但对DllRegisterServer 的调用失败, 错误代码: 0x80070005
  10. 计算机毕业设计参考文献
  11. 中国最美的100首古代情诗
  12. 颠覆你想象的企业报表软件——思迈特软件Smartbi
  13. 晦涩难懂的c语言语句,【c/c 学习心得】晦涩难懂的const关键词,const v.s. 指标值...
  14. systemd的日志存在哪里?
  15. ggplot2的自定义调色板
  16. folx pro 激活码使用安装下载教程(mac优秀下载工具)
  17. 基于麻雀算法改进的无线传感器网络Dv-hop定位算法 - 附代码
  18. 李开复给中国大学生的第四封信—大学四年应是这样度过
  19. java软件开发工程师证书考试费用,太完整了!
  20. 实现繁简互转的三种方法

热门文章

  1. hdu 1175 DFS连连看
  2. 截图编辑器 PicPick Biz v4.1.6/v5.0.3 Lite 绿色便携版
  3. ui设计移动端字体适配_超全面的UI设计规范整理汇总(包含iPhone X适配)
  4. 阿里云肖力:时间会把一切还给我们
  5. 大型系统技术架构要点
  6. 用python可以做什么有趣的事情_用python真的可以做很多有趣的事!我自己做了些小项目!...
  7. 软件项目开发VS足球运动
  8. 史上最全实战资源,机器学习框架、高分练手项目及数据集汇总
  9. Python字符串的简单操作
  10. 统计学习 最小错误率与最小风险的贝叶斯决策