1.设置节点

创建个 bg 单色渲染节点、bgControl 单色渲染节点、picManager空节点,他们的父子级关系如图所示。

(Canvas 为720*1280大小,bgControl 大小为500*500)

接下来需要先在 picManager 里面放入一个元素,制作一个预设体(后面所有元素都通过使用这个预设体去修改里面的图片资源并在 picManager 里面随机排列,这意味着此时里面放任意一个元素的图片都可以)

2.制作预设体

(在 resouece 文件夹里拖出任意一个图片资源放在 picManager 里面,这里拖的是 bear)

同时,创建一个名为 brear 的 TS 脚本挂载在 bear节点上。

此时,我们还需要创建一个名为 grid 的 TS 脚本,用于获得格子坐标(每个元素的坐标)。

下面是grid脚本:

const { ccclass, property } = cc._decorator;@ccclass
export default class grid {public x: number = 0;public y: number = 0;/****/constructor(x?, y?) {if (x) {this.x = x;}if (y) {this.y = y;}}
}

下面是bear脚本:

import grid from "./grid";const { ccclass, property } = cc._decorator;// 枚举
export enum BEARTYPE {BEAR,CAR,CARROT,CHICKEN,PIZZA,RABBIT,
}// 数据配置 数据结构
export class RES_NAME {public static res_name = {[BEARTYPE.CAR]: "car",[BEARTYPE.BEAR]: "bear",[BEARTYPE.CARROT]: "carrot",[BEARTYPE.CHICKEN]: "chicken",[BEARTYPE.PIZZA]: "pizza",[BEARTYPE.RABBIT]: "rabbit",}
}// const map = {"key1":"value1","key2":"value2"}@ccclass
export default class bear extends cc.Component {public m_type: BEARTYPE;public m_gird: grid_1;public picNode:cc.Sprite;// 初始化init(type, grid) {this.m_type = type;this.m_gird = grid;// this.picNode = this.node.getComponent(cc.Sprite);this.setPic();}// 设置图片资源setPic() {cc.loader.loadRes(RES_NAME.res_name[this.m_type], cc.SpriteFrame, function(err, sf: cc.SpriteFrame){this.node.getComponent(cc.Sprite).spriteFrame = sf;});}}

此处bear脚本其实就完成了,但是由于我们后期需要确认元素是否交换或者被消除之类的,我们可以让其 Label组件 上显示它自身的坐标,那么我们添加一个设置坐标的方法 setPos() ,代码如下:

import grid from "./grid";const { ccclass, property } = cc._decorator;// 枚举
export enum BEARTYPE {BEAR,CAR,CARROT,CHICKEN,PIZZA,RABBIT,
}// 数据配置
export class RES_NAME {public static res_name = {[BEARTYPE.BEAR]:"bear",[BEARTYPE.CAR]:"car",[BEARTYPE.CARROT]:"carrot",[BEARTYPE.CHICKEN]:"chicken",[BEARTYPE.PIZZA]:"pizza",[BEARTYPE.RABBIT]:"rabbit",}
}@ccclass
export default class bear extends cc.Component {public m_type: BEARTYPE;public m_gird: grid;public picNode:cc.Sprite;// 初始化init(type, grid) {this.m_type = type;// this.m_gird = grid;// this.picNode = this.node.getComponent(cc.Sprite);this.setPic();this.setPos(grid);}// 设置图片资源setPic() {cc.loader.loadRes(RES_NAME.res_name[this.m_type], cc.SpriteFrame, (err, sf: cc.SpriteFrame) => {this.node.getComponent(cc.Sprite).spriteFrame = sf;});}// 设置坐标setPos(grid) {this.m_gird = grid;this.node.getComponent(cc.Label).string = this.m_gird.x + "," + this.m_gird.y;// this.node.active = false;}}

下面是 picManager 脚本:

import bear, { BEARTYPE } from "./bear";
import grid from "./grid";const { ccclass, property } = cc._decorator;const maxW = 10;
const maxH = 10;
const size1 = 50;   // 元素大小为50
const pos = -225;   // 左下角初始坐标(-225,-225)@ccclass
export default class picManager extends cc.Component {// 预设体bear@property(cc.Prefab)bearPrefab: cc.Prefab;gridList = [];init() {this.gridList = [];for (let i = 0; i < maxW; i++) {this.gridList[i] = [];for (let j = 0; j < maxH; j++) {let temp = cc.instantiate(this.bearPrefab);     // 实例化预设体temp.getComponent(bear).init(this.getSj(), new grid(i, j));   // 初始化temp.position = cc.v3(pos + i * size1, pos + j * size1, 0);this.node.addChild(temp);this.gridList[i][j] = temp.getComponent(bear);}}}// 获取当前类的格子getGrid(i, j) {return this.gridList[i][j];}getSj() {return Math.floor(Math.random() * 6);}start() {this.init();// let ret = this.getSj();}}

先总结到这,有空继续更新后续内容

Cocos Creator三消小游戏(TS 01版)相关推荐

  1. cocos creator 微信小游戏接口

    cocos creator 微信小游戏接口 /** @Description:微信小游戏* @version: * @Author: lvpeijun* @Date: 2019-12-02 10:43 ...

  2. cocos creator vivo 小游戏 mac电脑

    cocos creator vivo 小游戏 mac电脑 接入文档 文档链接 vivo调试 调试文档浏览器真机调试 1:使用cocos creator 进行打包 要勾选调试模式 生成了com.exma ...

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

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

  4. Cocos Creator 微信小游戏苹果手机锁屏卡死的坑

    在制作小游戏项目时遇到了 苹果系列手机 只要游戏过程中进行锁屏后解锁时,整个手机或微信会卡个几秒甚至会黑屏! 所以就这个问题进行了各种 onshow/onhide 的操作试验. 第一种:在onshow ...

  5. 微信小游戏 资源服务器,Cocos Creator 微信小游戏 远程资源设置

    版本:2.3.4 参考: cocos教程:发布到微信小游戏 因为微信小游戏有包体大小限制. 主包4M 分包最大4M 一共最多16M 那么假如我们的游戏有个20M,50M,那就放不下了.只能放到远程服务 ...

  6. Cocos Creator 微信小游戏无法正确显示头像 解决方案

    常见的获取微信头像方法 UserInfo:  用户授权成功后 返回的微信用户信息 UserInfo 结构体信息详情: 进入 微信如何登陆授权: 进入 let url = userInfo.avatar ...

  7. Cocos Creator 微信小游戏 分包设置

    版本:2.3.4 参考: cocos教程:分包加载 在微信小游戏中使用分包.因为微信小游戏有包体限制. 主包最大只能4m,分包最大4m,一共最多16m.所以主包只放代码,而图片.json等资源都设置为 ...

  8. cocos creator微信小游戏,使用微信云开发实现“世界排行榜”

    微信提供的子域只能实现好友排行,我们一般希望实现所有玩家的世界排行榜. 那么问题来了,我们怎么获取所有玩家的openid?其实很简单,就是玩家打开游戏或排行榜时,请求玩家授权,这样就拿到openid了 ...

  9. Cocos Creator 微信小游戏 填坑记录

    环境:(ccc-v1.9.1, wx-v1.02.1804251) 微信小游戏禁止了动态生成并执行代码的功能,window.eval(). new Function() ,这些都不能用了. 微信小游戏 ...

  10. Cocos Creator微信小游戏添加banner广告

    学了小游戏开发也有几个月了,这边写一下这几个月以来遇到的坑. 首先是添加banner广告 看过很多个写微信广告的写法.感觉其实是在误导萌新,这是一般别人的例子 let winSize = wx.get ...

最新文章

  1. Java项目:校园外卖点餐系统(java+SSM+JSP+maven+mysql)
  2. 接口也可以创建对象吗_面试时,一个小小的设计模式可以把你虐成渣
  3. 测试lazy_enable_if的所有变体
  4. JavaSE 国际化 简单例子
  5. 201571030128/201571030118《小学四则运算练习软件软件需求说明》结对项目报告
  6. 终于有人把超融合和边缘计算说清楚了
  7. Xcode7 添加PCH文件
  8. 力扣242.有效的字母异位词(JavaScript)
  9. 编译安装-httpd-2.2.15.tar.gz
  10. errortext为什么不显示?原来是rowtemplate的高度作怪要=20
  11. 【Windows socket+IP+UDP+TCP】网络基础
  12. 梯度下降(二)--机器学习
  13. Intel 386 and AMD x86-64 Options for GCC
  14. 使运行的窗口不在任务栏显示
  15. Html2Excel 更名为 MyExcel,2.1.0 版本发布!
  16. 基于C# SQLServer开发学员管理系统
  17. 怎么格式化云服务器,云服务器磁盘怎么格式化
  18. html-canvas-绘制简单线条
  19. 金融分析与风险管理——资本资产定价模型
  20. C# Socket 长连接设置Keepalive

热门文章

  1. 国际贸易的价格表示方法贸易术语
  2. 澳大利亚域名_澳大利亚域名.au注册要求
  3. python battleship_codecademy的Python里的battleship报错
  4. 白帽黑客获 5 万美元赏金!只因利用漏洞控制所有特斯拉汽车
  5. 01 牛刀小试【PAT B1012】数字分类
  6. linux和windows局域网连接网络,linux与windows局域网互访
  7. 《统计学习方法》课后习题参考答案
  8. XStream null值序列化时不会显示标签
  9. windows vista本该有却没有的功能
  10. Springboot整合支付宝支付(沙箱)