cocos入门3:脚本编程

news/2024/4/25 23:13:52/文章来源:https://blog.csdn.net/weixin_36020178/article/details/127225230

简介

Cocos Creator的脚本主要是通过扩展组件来进行开发的。目前CocosCreator支持JavaScript和TypeScript两种脚本语言。通过编写脚本组件,并将它赋予到场景节点中来驱动场景中的物体。

在组件脚本的编写过程中,你可以通过声明属性,将脚本中需要调节的变量映射到属性检查器(Properties)中,供策划和美术调整。于此同时,你也可以通过注册特定的回调函数,来帮助你初始化,更新甚至销毁节点。

创建和使用脚本组件

创建了脚本(js/ts)之后可以绑定到任意的组件中
在这里插入图片描述

cc.Class

cc.Class是一个很常用的API,用于声明Cocos Creator中的类,为了方便区分,我们把使用cc.Class声明的类叫CCClass

  • 定义一个CCClass

调用cc.Class,传一个对象,并设置所需参数即可

let Sprite = cc.Class({name: "sprite",
})

以上代码用cc.Class创建一个类型sprite

  • 实例化
    Sprite变量保存的是一个js构造函数,可以直接new出一个对象
let obj = new Sprite()
  • 类型判断
    使用instanceof关键字
if( obj instanceof Sprite)
  • 实例方法
    定义一个print方法即可
let Sprite = cc.Class({name: 'sprite',print: function() {cc.log( "print function!")}
})
cc.Class({start () {let obj = new Sprite();obj.print()},extends: cc.Component,
});
  • 继承
//父类
let Sprite = cc.Class({name: 'sprite',print: function() {cc.log( "print function!")}
})
//子类
let SpriteSon = cc.Class({extends: Sprite
})
cc.Class({start () {let obj = new Sprite()obj.print()//子类调用父类方法let son = new SpriteSon()son.print()},extends: cc.Component,
});

声明自定义属性

简单声明

基本类型

多数情况在,可以使用一些简单声明

let Sprite = cc.Class({  name: 'sprite', })cc.Class({properties: {//对于基本数据类型,可以直接赋默认值height: 20,         //numbertype: "actor",      //stringloaded: false,      //booleantarget: null,       //object},start () {let obj = new Sprite();obj.print()},extends: cc.Component,
});

声明之后在属性检查器中会有相应的显示
在这里插入图片描述
当声明的属性具备某种类型(如:cc.Node,cc.Vec2等)可以赋他们的构造函数,如下

properties: {target: cc.Node,pos: cc.Vec2,
}

下图中将target属性与TestNode进行了关联
在这里插入图片描述

声明数组类型

当声明一个数组时,可以在声明处填写他们的类型或者构造函数来完成声明

let Sprite = cc.Class({  name: 'sprite', })cc.Class({properties: {any: [], //不定义具体类型type: [ cc.String],loaded: [ cc.Boolean],floats: [ cc.Float],ints: [ cc.Integer],target: [ cc.Node],values: [cc.Vec2],frames: [cc.SpriteFrame],},start () {let obj = new Sprite();obj.print()},extends: cc.Component,
});

在这里插入图片描述

完整声明

完整声明就是声明的属性是一个对象,不是一个简单的数据类型

let Sprite = cc.Class({  name: 'sprite', })cc.Class({properties: {score: {default: 0,type: cc.Integer,   //限定score的类型displayName: '得分',  //score属性在属性检查器中展示的中文名tooltip: "设置玩家初始得分", //鼠标移入时展示在属性检查器中的提示visible: true,  //设为true,则在属性检查器中不会展示serializable: true, //设为false,则不序列化(保存)该属性}},start () {let obj = new Sprite();obj.print()},extends: cc.Component,
});

在这里插入图片描述

数组类型

简单看跟简单声明数组类型没有什么差别,可能还有什么其他的用法

let Sprite = cc.Class({  name: 'sprite', })cc.Class({properties: {names:{default: [],type: [cc.String],},nodes:{default: [],type: [cc.Node]}},start () {let obj = new Sprite();obj.print()},extends: cc.Component,
});

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_398964.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器人C++库(10)Robotics Library 之碰撞检测算法

机器人C库(10)Robotics Library 之碰撞检测算法 1.碰撞检测开源库介绍 RL库中集成了以下开源含碰撞检测功能的库: 1.bullet3:https://pybullet.org/wordpress/ 2.FCL:https://github.com/flexible-collision-librar…

【漏洞复现-weblogic-文件上传】vulfocus/weblogic-cve_2018_2894

目录 一、靶场环境 1.1、平台: 1.2、知识: 1.3、描述: 二、漏洞验证 2.1、分析: 2.4、解题: 一、靶场环境 1.1、平台: Vulfocus 漏洞威胁分析平台 123.58.224.8:43200 访问http://ip:port/console后跳转到登陆页…

java基于微信小程序的社区疫情防疫系统 uniapp小程序

用户往往因为不能及时了解到疫情的最新进展而造成许多担忧。另一方面,疫情信息没能进行系统的管理与维护使用户没能在系统里及时的获取到信息。而传统的疫情防控系统,采用的还是人工管理、手工备案、人工查询的方式。但是随之用户人数的增多这种管理方式…

Exchange Online 发送邮件

项目背景 2022年10月4日 微软更改了Exchange的验证方式,原来exchangelib的库没法继续实现邮件的发送。 实现方式 利用Microsoft Graph API 里 发送邮件 - Microsoft Graph v1.0 | Microsoft LearnPOST https://graph.microsoft.com/v1.0/me/sendMail Content-type: text/plai…

【路径规划】基于matlab遗传算法求解仓库拣货距离最短优化问题【含Matlab源码 2154期】

一、物流配送中心拣货作业简介 1 物流配送中心拣货作业 1.1 问题描述 双区型仓库一般是由一定数量的等长巷道组成,巷道两侧的货架上存放着需要拣取的各种物品。横向有三条过道,不同于单区型仓库(single-block warehouse)的是&…

面向对象核心概念实验

第1关:面向对象核心概念编程-简单测试 本关任务: 一、请在源代码文件“Complex.java”中实现公开的复数类“Complex”,其变量(属性)是复数的实部与虚部,实部和虚部的类型都为double,访问限制为私有。同时定义以下公开方法: (1)构造方法:提供几种构造方法,包括没有…

第 8 章 项目质量管理

手工艺阶段---质量检验阶段---统计质量阶段---全面质量管理阶段(TQM,全面,全过程,全员参与) TQM又强调5Q法, QS:遵从质量管理体系,公司级负责 QP:制定质量管理计划&…

Vue中的props配置项(父组件向子组件传数据)

目录 总结 问题1:如果子组件Student.vue接收到数据后,要对数据进行操作,比如说:让显示在页面上的年龄比接收到的年龄要大,怎么操作?--> 通过 v-bind绑定属性 ,其属性值是 运行引号里面JS表达式执行的结…

Research on Micro-Expression Spotting Method Based on Optical Flow Features

Research on Micro-Expression Spotting Method Based on Optical Flow Features 哈喽,大家好,从今天开始更《菜鸡读论文》系列,因为我真的很菜,可以说是CV白的不能再白了,每天都在膜拜大佬,感觉别人和自己…

linux内存重映射的概念及对内核虚拟地址的重映射方法分析

【摘要】本文分析了Linux设备的内存映射的相关概念和理论,使用例子对mmap及nopage的驱动编写方法进行了解释,最后对3种不同的内核虚拟空间分配方法下,mmap驱动编写方法进行了细致的分析和调试。 1、mmap概念 如下图所示,mmap是操…

学习笔记276—怎么查询哪些药属于医保报销范围?

第一个方法:登陆中国医疗保险网。 点击下方的查询中的医保目录查询: 在页面中输入你想知道的药品名称即可: 意在交流学习,欢迎点赞评论🙏, 如有谬误,请联系指正。转载请注明出处。 联系方式: e-mail: heyi9069@gmail.com QQ: 3309198330(请简要说明来意,并备注“来…

Java 方法区的演进

在 JDK7 及以前,习惯上把方法区,称为永久代。JDK8开始,使用元空间取代了永久代。 元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代最大的区别在于:元空间不在虚拟机设置的内存中&#xff…

Python 中计算字符串中的元音个数

计算字符串中的元音个数: 将元音存储在一个字符串中。使用 dict 理解来迭代字符串。使用 str.count() 方法计算原始字符串中每个元音的出现次数。 vowels aeioumy_str www.jiyik.com# ✅ 计算字符串中每个元音出现的次数 vowels_count {vowel: my_str.lower().…

计算机专业研究生核心能力培养(4)——实验的流程及规范

0. 前言 今天我们讲一讲实验的流程和规范,主要包括以下7个部分: 目的清晰代码规范实验可拓展结果可比较结果可复现分析实验(常规)分析实验(有针对性)1. 目的清晰 当我们进行一个课题进行研究的时候,最重要的是要目的清晰,也就是说我们为什么要进行这个研究。做实验的…

使用cpolar建立固定的SSH隧道

一直以来,不同的操作系统都在相互竞争,而竞争的结果,就每种操作系统都占领了自己的一片天地。虽然现在的家用电脑大多使用Windows操作系统,但服务器领域大多使用占用资源更少的Linux系统,更不用说苹果电脑专属的iOS操作…

Cell:女性痴呆风险是男性的2倍,与基因相关,或是与生俱来的

医林研究院,让医学更简单 阿尔茨海默症(AD),俗称老年痴呆症,是一个具有高经济和社会负担的全球健康问题。全球约有5000万痴呆症病例,每年新增约有1000万例,在中国,有上千万患者&…

Github每日精选(第52期):验证您的有风险的shell命令shellfirm

shellfirm shellfirm 是一个shell的拦截器,拦截任何有风险的shell命令(默认或由您定义)并提示您进行双重验证。 我如何从自己身上拯救自己? rm -rf *git reset --hard在按下回车键之前?kubectl delete ns停止&#…

【干货】10个高质量的java自学网站推荐

经常有人留言问我,“想学习Java编程,有没有学习资源推荐,有哪些网站可以关注”。好些同学是去网盘搜索,或者去某宝购买,搜集一堆资料,但是又不清楚哪些是重复的内容,哪些内容是不是版本已经过时…

【Bluetooth|蓝牙开发】十一、一文秒懂 | 超详细的Bluez交叉编译

个人主页:董哥聊技术我是董哥,嵌入式领域新星创作者创作理念:专注分享高质量嵌入式文章,让大家读有所得!【 所有文章汇总】 1、 前言 前面几篇文章,主要讲解了蓝牙协议栈层面的内容,本篇来从源…

城区导航智能驾驶难在哪?写在小鹏/华为-极狐NOA释放之时

交流群 | 进“传感器群/滑板底盘群”请加微信号:xsh041388交流群 | 进“汽车基础软件群”请加微信号:ckc1087备注信息:群名称 真实姓名、公司、岗位【本文一万字左右,预计阅读时间约20分钟,文中有若干图片/GIF/视频&a…