2019-08-30 16:31:11 weixin_43142073 阅读数 215
  • 走入 Cocos Creator视频教程

    Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。

    1708 人正在学习 去看看 姜威

cocos creator 实现手机震动的效果(最全说明)

之前在做creator时,需要打包调用安卓震动,看了许多其他博客的方法,虽然意思说明了但是东西不全,因此也花了不少时间。然后自己总结了套最全的傻瓜教程,有兴趣的可以看下。

1.将Cocos Creator项目打包发布形成build文件夹
用Android-studio打开如下目录(图中红色标记):
*/build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/AppActivity.java
在这里插入图片描述

在AppActivity.java中导入类

import android.os.Vibrator;
import android.app.Service; 

在这里插入图片描述

2.在class AppActivity( )方法中添加静态成员和静态方法:

代码:

Public static Vibrator myVibrator;

// 获得系统的Vibrator实例
myVibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);

Public static Void vibrator(int time){
            myVibrator.vibrator(time);// 参数为震动时间
};

在这里插入图片描述

3.最后在AndroidManifest.xml文件中添加权限(#不要忽略此步骤)

<uses-permission android:name="android.permission.VIBRATE"/>

在这里插入图片描述

4.在cocos creator脚本中添加震动方法(调用即可)

代码:

// 震动效果
vibrationEffect(){
    if (cc.sys.os === cc.sys.OS_IOS){
        //调用苹果的方法;
    }
    else if (cc.sys.os === cc.sys.OS_ANDROID) {
        jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "vibrate", "(I)V", 3000);
    }
},

5.其他(此部分想更加了解cocos creator原生调用可以看下)
参数剖析:
参数一:“org/cocos2dx/javascript/AppActivity”:java中的包名(.换成/)+class文件名,就当是路径好了
参数二:“vibrate”:方法名(必须public static)
参数三:“ (I)V”:()内的是调用的java方法的参数类型,()外面的是返回值类型
【类型对应表:java类型int —I java类型float----F java类型boolean(布尔)-----Z java类型String-----L java/lang/String;】
参数四:是java方法需要传入的参数(可以多个,与参数三中()内的数量和类型一一对应)
参数签名说明: https://docs.cocos.com/creator/2.0/manual/zh/advanced-topics/java-reflection.html?h=java.
上面的调用
//根据指定的模式进行震动
//第一个参数:该数组中第一个元素是等待多长的时间才启动震动,
//之后将会是开启和关闭震动的持续时间,单位为毫秒
//第二个参数:重复震动时在pattern中的索引,如果设置为-1则表示不重复震动

    long[] patter = {1000, 10000, 1000, 10000};
    vibrator.vibrate(patter, -1);

间隔震动

public static void vibrateLong(){
    long[] patter = {1000, 1000, 500, 1000};
    myVibrator.vibrate(patter,-1);
}

creator调用方法

if (cc.sys.os === cc.sys.OS_ANDROID) {
    jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity","vibrateLong","()V");
}
2019-04-10 22:39:15 yulin009 阅读数 257
  • 走入 Cocos Creator视频教程

    Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。

    1708 人正在学习 去看看 姜威

Cocos Creator note 2.0

1. Cocos Creator 是游戏引擎吗?

Cocos Creator 是一个完整的游戏开发解决方案,包括了 cocos2d-x 引擎的 JavaScript 实现(不需要学习一个新的引擎),以及能让你更快速开发游戏所需要的各种图形界面工具

2. 我使用 Cocos Creator 能开发面向哪些平台的游戏?

Cocos Creator 目前支持发布游戏到 Web、iOS、Android、各类"小游戏"、PC 客户端等平台,真正实现一次开发,全平台运行。

3. 下载安装地址

Cocos Creator 产品首页

4. 项目结构
ProjectName(项目文件夹)
├──assets
├──library
├──local
├──settings
├──temp
└──project.json
  • 资源文件夹(assets)
    assets 将会用来放置您游戏中所有本地资源、脚本和第三方库文件。只有在 assets 目录下的内容才能显示在 资源管理器 中。assets 中的每个文件在导入项目后都会生成一个相同名字的 .meta 文件,用于存储该文件作为资源导入后的信息和与其他资源的关联。一些第三方工具生成的工程或设计原文件,如 TexturePacker 的 .tps 文件,或 Photoshop 的 .psd 文件,可以选择放在 assets 外面来管理。

  • 资源库(library)
    library 是将 assets 中的资源导入后生成的,在这里文件的结构和资源的格式将被处理成最终游戏发布时需要的形式。如果您使用版本控制系统管理您的项目,这个文件夹是不需要进入版本控制的。

    当 library 丢失或损坏的时候,只要删除整个 library 文件夹再打开项目,就会重新生成资源库。

  • 本地设置(local)
    local 文件夹中包含该项目的本地设置,包括编辑器面板布局,窗口大小,位置等信息。您不需要关心这里的内容,只要按照您的习惯设置编辑器布局,这些就会自动保存在这个文件夹。一般 local 也不需要进入版本控制。

  • 项目设置(settings)
    settings 里保存项目相关的设置,如 构建发布 菜单里的包名、场景和平台选择等。这些设置需要和项目一起进行版本控制。

  • project.json
    project.json 文件和 assets 文件夹一起,作为验证 Cocos Creator 项目合法性的标志。只有包括了这两个内容的文件夹才能作为 Cocos Creator 项目打开。而 project.json 本身目前只用来规定当前使用的引擎类型和插件存储位置,不需要用户关心其内容。

    这个文件也应该纳入版本控制。

5. 编辑器界面介绍
  • 资源管理器
  • 层级管理器
  • 场景编辑器
  • 动画编辑器
  • 属性检查器
  • 控件库
  • 控制台
  • 设置
  • 项目设置
  • 主菜单
  • 工具栏
6. 推荐使用VS Code作为代码编辑器

并在settings.json文件里面添加如下代码:

"search.exclude": {
    "**/node_modules": true,
    "**/bower_components": true,
    "build/": true,
    "temp/": true,
    "library/": true,
    "**/*.anim": true
},
"files.exclude": {
    "**/.git": true,
    "**/.DS_Store": true,
    "**/*.meta": true,
    "library/": true,
    "local/": true,
    "temp/": true
}

目的是设置文件显示和过滤

2018-02-28 19:58:28 lck898989 阅读数 2850
  • 走入 Cocos Creator视频教程

    Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。

    1708 人正在学习 去看看 姜威

cocos creator 游戏引擎包含引擎资源管理,场景编辑,游戏预览和发布等游戏开发所需要的全套功能,并且将所用的功能和工具链都整合到一个应用程序里,

一:Cocos Creator的安装:这里是windows环境下的安装

Cocos Creator可以在官网上进行下载:点击打开链接

从 v1.3.0 开始,Windows 版 Cocos Creator 将不提供 32 位操作系统支持。

Windows 版的安装程序是一个 .exe 可执行文件,通常命名会是 CocosCreator_vX.X.X_20XXXXXX_setup.exe,其中 vX.X.X 是 Cocos Creator 的版本号,如 v1.2.2,后面的一串数字是版本日期编号。

注意 日期编号在使用内测版时会更新的比较频繁,注意如果当前 PC 上已安装的版本号和安装包的版本号相同时,无法自动覆盖安装注意相同版本号的安装包,需要先卸载之前的版本才能继续安装。

应用的安装路径默认选择了 C:\CocosCreator,可以在安装过程中进行指定。

Cocos Creator 将会占据系统盘中大约 1.25 GB 的空间,请在安装前整理您的系统盘空间。

注意:如果出现安装失败,请尝试通过命令行执行安装程序:

CocosCreator_v1.2.0_2016080301_setup.exe /exelog "exe_log.txt" /L*V "msi_log.txt"

用以下命令执行,或为安装程序创建一个快捷方式,并将该命令行参数填入快捷方式的 目标 属性中。然后将生成的安装日志(exe_log.txt 和 msi_log.txt)提交给开发团队寻求帮助。

下载完成之后双击解压后文件及中的CocosCreator.exe,即可启动Cocos Creator

二:禁用GPU加速

对于部分 windows 操作系统和显卡型号,可能会遇到

This browser does not support WebGL...

的报错信息,是显卡驱动对编辑器 WebGL 渲染模式的支持不正确导致的,如果出现这种情况,可以尝试使用命令行运行 CocosCreator.exe 并加上 --disable-gpu 运行参数,来禁用 GPU 加速功能,可以绕开部分显卡驱动的问题。

三:使用Cocos开发者账号登录

如果您不需要发布游戏到原生平台,以上的两步简单操作就能为您准备好使用 Cocos Creator 制作游戏的一切开发环境。

Cocos Creator 启动后,会进入 Cocos 开发者帐号的登录界面。登录之后就可以享受我们为开发者提供的各种在线服务、产品更新通知和各种开发者福利。

如果之前没有 Cocos 开发者帐号,您可以使用登录界面中的 注册 按钮前往 Cocos 开发者中心进行注册。或直接使用下面的链接:

https://passport.cocos.com/auth/signup

注册完成后就可以回到 Cocos Creator 登录界面完成登录了!验证身份后,我们就会进入 Dashboard 界面。除了手动登出或登录信息过期,其他情况下都会用本地 session 保存的信息自动登录。

四:使用Dashboard

启动 Cocos Creator 并使用 Cocos 开发者帐号登录以后,就会打开 Dashboard 界面,在这里你可以新建项目、打开已有项目或获得帮助信息。

界面总览

dashboard overview

上图所示的就是 Cocos Creator 的 Dashboard 界面,包括以下几种选项卡:

  • 最近打开项目: 列出最近打开项目,第一次运行 Cocos Creator 时,这个列表是空的,会提示新建项目的按钮。
  • 新建项目: 选择这个选项卡,会进入到 Cocos Creator 新项目创建的指引界面。
  • 打开其他项目: 如果你的项目没有在最近打开的列表里,你也可以点击这个按钮来浏览和选择你要打开的项目。
  • 帮助: 帮助信息,一个包括各种新手指引信息和文档的静态页面。

下面我们来依次介绍这些分页面。

最近打开项目

你可以通过 最近打开项目 选项卡快速访问近期打开过的项目。第一次运行 Cocos Creator 时,这个列表是空的,在界面上会显示 新建项目 的按钮。你可以在创建 了一些项目后回来,并看到你新建的项目出现在列表里。

recent project hovering

当你的鼠标悬停在一个最近打开项目的条目上时,会显示出可以对该项目进行操作的行为:

  • 点击 打开 在 Cocos Creator 编辑器中打开该项目
  • 点击 关闭 将该项目从最近打开项目列表中移除,这个操作不会删除实际的项目文件夹。

此外,当鼠标点击选中或悬停在项目上时,你能够在 Dashboard 下方的状态栏看到该项目所在路径。

status bar

新建项目

你可以在 新建项目 选项卡里创建新的 Cocos Creator 项目。

在 新建项目 页面,我们首先需要选择一个项目模板,项目模板会包括各种不同类型的游戏基本架构,以及学习用的范例资源和脚本,来帮助你更快进入到创造性的工作当中。

注意: 早期的 Cocos Creator 版本中还没有很多可选择的项目模板,我们会随着 Cocos Creator 功能逐渐完整持续添加更多模板为用户提供方便。

点击选择一个模板,你可以在页面下方看到该模板的描述。

choose template

在页面下方你可以看到项目名称和将会保存到的地址。你可以在项目路径输入框手动输入项目所在路径和项目名称,路径的最后一节就是项目名称。

你也可以点击 浏览 按钮,打开浏览路径对话框,在你的本地文件系统中选择一个位置来存放新建项目。

一切都设置好后,点击 新建项目 按钮来完成项目的创建。Dashboard 界面会被关闭,然后新创建的项目会在 Cocos Creator 编辑器主窗口中打开。

打开其他项目

如果你在 最近打开项目 页面找不到你的项目,或者刚刚从网上下载了一个从未打开过的项目时,你可以通过 打开其他项目 选项卡按钮在本地文件系统浏览并打开项目。

点击 打开其他项目 后,会弹出本地文件系统的选择对话框,在这个对话框中选中你的项目文件夹,并选择打开就可以打开项目。

注意:Cocos Creator 使用特定结构的文件夹来作为合法项目标识,而不是使用工程文件。选择项目时只要选中项目文件夹即可。

Hello World

了解 Dashboard 以后,我们现在看看如何创建和打开一个 Hello World 项目。

创建项目

在 Dashboard 中,打开 新建项目 选项卡,选中 Hello World 项目模板。

new project

然后在下面的项目路径栏中指定一个新项目即将被创建的位置,路径的最后一部分就是项目文件夹。

填好路径后点击右下角的 新建项目 按钮,就会自动以 Hello World 项目模板创建项目并打开。

打开场景,开始工作

Cocos Creator 的工作流程是以数据驱动和场景为核心的,初次打开一个项目时,默认不会打开任何场景,要看到 Hello World 模板中的内容,我们需要先打开场景资源文件。

open scene

在 资源管理器 中双击箭头所指的 helloworld 场景文件。Cocos Creator 中所有场景文件都以 scene 作为图标。

Hello World 项目分解

打开 helloworld 场景后,我们就可以看到这个模板项目中的全部内容了。

breakdown

场景中的内容会按照工作流分别呈现在 资源管理器、层级管理器、场景编辑器、属性检查器 四个核心面板中,关于编辑器界面和主要面板的介绍我们会在后面的 编辑器界面介绍 部分详细介绍。

预览场景

要预览游戏场景,点击编辑器窗口正上方的 预览游戏 按钮。

preview button

Cocos Creator 会使用您的默认浏览器运行当前游戏场景,效果如图所示:

preview

点击预览窗口左上角的下拉菜单,可以选择不同设备屏幕的预览效果。

修改欢迎文字

Cocos Creator 以数据驱动为核心的最初体现,就在于当我们需要改变 Hello World 的问候文字时,不需要再编辑脚本代码,而是直接修改场景中保存的文字属性。

首先在 层级管理器 中选中 Canvas 节点,我们的 HelloWorld 组件脚本就挂在这个节点上。

接下来在 属性检查器 面板下方找到 HelloWorld 组件属性,然后将 Text 属性里的文本改成 你好,世界!

change text

再次运行预览,可以看到欢迎文字已经更新了:

update preview

小结

这一节的内容,让我们认识了如何从场景开始 Cocos Creator 的工作流程,并且通过修改欢迎文字小小展示了数据驱动的工作方式。接下去我们会用逐步讲解的方式引导大家完成一个较为完整的休闲游戏。相信之后您对 Cocos Creator 的工作流会有更完整的认识。


2019-09-11 11:25:18 zhyl8157121 阅读数 597
  • 走入 Cocos Creator视频教程

    Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。

    1708 人正在学习 去看看 姜威

前言

什么是 Cocos Creator

以下内容引自 Cocos Creator 官网:

Cocos Creator 是一个完整的游戏开发解决方案,包括了 cocos2d-x 引擎的 JavaScript 实现(不需要学习一个新的引擎),以及能让你更快速开发游戏所需要的各种图形界面工具。

本篇文章的目的

通过一个简单的小例子,让大家快速上手 Cocos Creator,并对 Cocos Creator 中的一些基本概念有一个简单的认识。

开发环境

  • OS: macOS High Sierra (Version: 10.13.4)
  • Cocos Creator: v2.1.2
  • Visual Studio Code: version 1.38

因为我们的例子比较简单,所以开发环境对我们的影响很小。后面 Cocos Creator 版本更新了之后,可能界面会有些许变化,不过其他的内容应该大同小异。

项目资源

推荐大家先把项目 clone 到本地,然后参考着代码来看本篇文章。

开搞

思路

如文章标题所说,我们要做的是一个拼图游戏,大家可以稍微结合一下现实中的拼图游戏,考虑我们需要实现哪些功能点:

1、准备一张图
2、把图片切割成小块(不能多,也不能少)
3、打乱图片顺序(位置)
4、每张图要能拖动改变位置

项目概览

1、创建项目

首先,我们先创建一个空项目,空项目没用的东西比较少,我们用到的东西也比较少,理解起来比较清晰。
在这里插入图片描述
看一下我们最终完成的项目大致的(Creator 中只显示一部分,其他的我们暂时也不用关注)目录结构:

在这里插入图片描述
大家可以和自己的项目比较一下,不同的内容就是我们需要做的。

2、项目文件描述

先说文件夹,除了 resources 文件夹,其他文件夹的命名规则大家随意,说一下我们项目中的使用规则:

  • prefeb 文件夹中存放 预制资源 (什么是预制资源,之后说)
  • res 文件夹中存放 静态加载的资源(可以直接在 Creator 编辑器中使用的)
  • resources 文件夹中存放 动态加载的资源 (程序跑起来之后,动态加载)
  • scripts 文件夹中存放 各类脚本

当然,大家可以有自己的规则,这个都不影响的。

我写到这里发现上面写的太啰嗦又太详细了,后面关于 Cocos Creator 的基本使用的内容就不写了,大家去找其他教程吧,最好是视频教程,因为一些操作用文字描述不太清楚,要结合一大堆图,但是视频的话看一眼就懂了。

算了,直接上代码。

核心代码

1、如何使用预制资源

直接看代码就会干净多了,我们先看看怎么在代码中使用预制资源做一个 Node 出来。

// 使用预制资源实例化一个 node 对象
let node = cc.instantiate(self.itemPrefeb);

// 为新 node 对象指定父node,每个node都必须要有父node,不然不会显示 
node.parent = self.node;

// 获取新 node 对象的 item 组件,也就是我们脚本中的 `item.js` 文件
self.items.push(node.getComponent('item'));

2、如何动态加载图片资源

// 加载 Texture
cc.loader.loadRes("pic", cc.Texture2D, function (err, texture) {
    self.curTexture = texture;
    self.__initItems();
    self.__shuffleItemPos();
});

pic 就是指 resources 文件夹下面的 pic.png 文件。这里就是动态加载,动态加载的资源必须要再 resources 文件夹下面,不需要指定扩展名,但要指定类型,这里就是 cc.Texture2D

当然,针对我们的项目来说,这里采用静态加载的方式也是可以的,但是考虑到后面可能会动态的更换拼图的贴图,再有也是为了学习新技术嘛,用动态的,就用动态的。

3、如何切割图片

let rect = cc.rect(cfg.x, cfg.y, cfg.w, cfg.h);
this.picSprite.spriteFrame = new cc.SpriteFrame(cfg.texture, rect);
this.picSprite.node.setContentSize(cfg.w, cfg.h);

切割图片其实就是在给 sprite 设置 spriteFrame 的时候,在 texture 中划分指定区域(rect)作为 spriteFrame。

注意设置完之后要把 sprite 所属的 node 的大小改变一下,不然不会显示的哈。

4、如何打乱图片位置

虽说是打乱,但是不能天马星空的乱哈,一定要有章法,每个图片要在基本合理的位置,我想要做到的效果是,尽量不重叠,别飞出去太远,尽量乱。

for (let i = 0; i < self.items.length; i++) {
     let randomSeed = Math.floor(Math.random() * self.items.length);
     let item = self.items[i];
     let rItem = self.items[randomSeed];
     let x = item.cfg.posX;
     let y = item.cfg.posY;

     item.setItemPosition(rItem.cfg.posX, rItem.cfg.posY);
     rItem.setItemPosition(x, y);
 }

光是看代码可能有点蒙圈哈,讲一下思路:

  • 遍历所有的图片
  • 将每个图片与另一个随机选中的图片交换位置

这个方法有点蠢,但是能实现功能,又不用考虑性能的事,先这样。

5、如何实现拖动

this.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
    this.opacity = 100;
    let delta = event.touch.getDelta();
    this.x += delta.x;
    this.y += delta.y;
}, this.node);

this.node.on(cc.Node.EventType.TOUCH_END, function () {
    this.opacity = 255;
}, this.node);

原理就是,监听 TOUCH_MOVE 事件,移动的时候,随时改变元素的位置(x 和 y)。

这里多做了一件事,拖动的时候把透明度改成 100,拖动完成 TOUCH_END 的时候把透明度改回 255

6、如何给图片加上边框

大家想一想,如果是让你来,你会怎么做?

我这里的思路哈,做两个 node(sprite),下面放图片,上面放边框(另一张图),把这两个 node 指定为同一个父 node,拖动的是父 node,那么下面的图片和边框就会一起移动了。

这也就是我们项目中预制资源 item-prefeb 实现的原理及内容。

但要注意,因为图片的大小是动态的(虽然是写死的,因为是动态加载的,就当做动态的嘛),所以边框的大小也要跟着变。

this.frame.setContentSize(cfg.w, cfg.h);

然后还要注意,添加的边框图片,在 creator 中要做一点设置,不能使用默认的:

在这里插入图片描述
简单说,就是要把 sprite 的 type 指定为 SLICED,同时,点击 sprite frame 旁边的 edit 按钮,在弹出框中,调整上下左右四条线的位置,这样红色圆圈圈住的部分就不会随着 node 大小的改变而发生形变了。

说起来可能不好理解,大家自己试一下就知道了,一个用默认的,一个用我上面描述的,看一眼就懂了。

好了, 核心的内容基本就这些,其他的都比较简单或者比较基础,大家参考着项目源码应该很容易就能看懂了。

效果

我们看一下跑起来的效果:

1、初始化
在这里插入图片描述
2、拼接中
在这里插入图片描述
3、完成(哒哒)
在这里插入图片描述

总结

知识点

总结一下本项目涉及到或者讲解到的知识点哈:

1、creator 文件目录结构(大致),尤其注意 resources 文件夹
2、如何在代码中使用预制资源
3、如何动态加载图片资源
4、如何切割图片
5、如何把图片位置打乱
6、如何实现拖动
7、如何实现图片加边框及加边框的注意事项(技巧)

下一步

这只是一个小的实战实例,很多内容还不完善,比如:

是不是要加点音效?

要不要来一个计时?

或者干脆来一个倒计时?

咱们一直说动态加载动态加载,现在虽然使用的是动态加载的方法,但是并没看到和静态加载有什么实质性的变化呀,我怎么换图片?

好了, 今天的内容就到这里,之后我们会逐渐完善我们的拼图游戏,也许之后还会发布到各大应用市场,然后横扫各大榜单,然后我们再给游戏引入社交系统,加入内置商城,先做线上,后做线下,风投争相投资,我们先上市,再发展平台,把它打造成全世界坠吼的拼图游戏。

大家说吼不吼啊!

就酱。

下一篇地址:【Cocos Creator 实战】02 - 给拼图游戏加上音乐和音效

2019-06-27 17:13:12 S_clifftop 阅读数 1197
  • 走入 Cocos Creator视频教程

    Cocos Creator游戏视频培训课程设计上,由一个简单的游戏,引入课程主体。先熟练开发流程,在熟练API,后熟练使用UI,理解碰撞和物理系统。循序渐进,课程中穿插很多小案例实践功能,压缩枯燥内容。

    1708 人正在学习 去看看 姜威

Cocos Creator 在 v2.0.9 提供了一套新的 API —— cc.tween。cc.tween 能够对对象的任意属性进行缓动,功能类似于 cc.Action(动作系统)。但是 cc.tween 会比 cc.Action 更加简洁易用,因为 cc.tween 提供了链式创建的方法,可以对任何对象进行操作,并且可以对对象的任意属性进行缓动。

但类型定义文件不完善~等官方修复不知道要什么时候,毕竟排期可能不是特别优先


问题及解决方法

为了支持Typescript以及高效开发,cocos有类型定义文件creator.d.ts,但是只有类的声明,所以直接用其中的方法tween(target?: any): Tween; 会报错,所以需要修改一下d.ts文件,或者新建一个d.ts从模块出导出该方法便可以使用

1、tween无法找到 :属性“tween”在类型“typeof cc”上不存在

  • 添加export function tween(target?: any): Tween;

2、调用to方法:An argument for ‘opts’ was not provided

  • 这个虽然会报错,但能运行,嫌提示烦可以改为可选参数建议类似的方法里面的参数除了必要的其余全都改为可选参数to(duration: number, props?: any, opts?: {progress: Function; easing: Function|string; }): Tween;

3、类型“{ easing: string; }”的参数不能赋给类型“{ progress: Function; easing: string | Function; }”的参数。 Property ‘progress’ is missing in type ‘{ easing: string; }’ but required in type ‘{ progress: Function; easing: string | Function; }’.

  • 和上面一样,报错,但能运行,建议使用type来列出所需要使用的参数,例如: type Ease="cubicOut" | "quintInOut"
  • 然后替换to(duration: number, props: any, opts: {progress: Function; easing: Function|Ease; }): Tween;

下面是creator.d.ts中修改后的Tween及其中的方法(直接复制替换完事):

	/** !#en
	Tween provide a simple and flexible way to create action.
	Tween's api is more flexible than cc.Action:
	 - Support creating an action sequence in chained api,
	 - Support animate any objects' any properties, not limited to node's properties.
	   By contrast, cc.Action needs to create a new action class to support new node property.
	 - Support working with cc.Action,
	 - Support easing and progress function.
	!#zh
	Tween 提供了一个简单灵活的方法来创建 action。
	相对于 Cocos 传统的 cc.Action,cc.Tween 在创建动画上要灵活非常多:
	 - 支持以链式结构的方式创建一个动画序列。
	 - 支持对任意对象的任意属性进行缓动,不再局限于节点上的属性,而 cc.Action 添加一个属性的支持时还需要添加一个新的 action 类型。
	 - 支持与 cc.Action 混用
	 - 支持设置 {{#crossLink "Easing"}}{{/crossLink}} 或者 progress 函数 */
	export class Tween {		
		/**
		!#en
		Insert an action or tween to this sequence
		!#zh
		插入一个 action 或者 tween 到队列中
		@param other other 
		*/
		then(other: Action|Tween): Tween;		
		/**
		!#en
		Set tween target
		!#zh
		设置 tween 的 target
		@param target target 
		*/
		target(target: any): Tween;		
		/**
		!#en
		Start this tween
		!#zh
		运行当前 tween 
		*/
		start(): Tween;		
		/**
		!#en
		Stop this tween
		!#zh
		停止当前 tween 
		*/
		stop(): Tween;		
		/**
		!#en
		Clone a tween
		!#zh
		克隆当前 tween
		@param target target 
		*/
		clone(target?: any): Tween;		
		/**
		!#en
		Add an action which calculate with absolute value
		!#zh
		添加一个对属性进行绝对值计算的 action
		@param duration duration
		@param props {scale: 2, position: cc.v3(100, 100, 100)}
		@param opts opts 
		*/
		to(duration: number, props?: any, opts?: tweenOpts): Tween;		
		/**
		!#en
		Add an action which calculate with relative value
		!#zh
		添加一个对属性进行相对值计算的 action
		@param duration duration
		@param props {scale: 2, position: cc.v3(100, 100, 100)}
		@param opts opts 
		*/
		by(duration: number, props?: any, opts?: tweenOpts): Tween;		
		/**
		!#en
		Directly set target properties
		!#zh
		直接设置 target 的属性
		@param props props 
		*/
		set(props: any): Tween;		
		/**
		!#en
		Add an delay action
		!#zh
		添加一个延时 action
		@param duration duration 
		*/
		delay(duration: number): Tween;		
		/**
		!#en
		Add an callback action
		!#zh
		添加一个回调 action
		@param callback callback 
		*/
		call(callback: Function): Tween;		
		/**
		!#en
		Add an hide action
		!#zh
		添加一个隐藏 action 
		*/
		hide(): Tween;		
		/**
		!#en
		Add an show action
		!#zh
		添加一个显示 action 
		*/
		show(): Tween;		
		/**
		!#en
		Add an removeSelf action
		!#zh
		添加一个移除自己 action 
		*/
		removeSelf(): Tween;		
		/**
		!#en
		Add an sequence action
		!#zh
		添加一个队列 action
		@param actions actions 
		*/
		sequence(actions: [Action|Tween]): Tween;		
		/**
		!#en
		Add an parallel action
		!#zh
		添加一个并行 action
		@param actions actions 
		*/
		parallel(actions: [Action|Tween]): Tween;		
		/**
		!#en
		Add an repeat action.
		This action will integrate before actions to a sequence action as their parameters.
		!#zh
		添加一个重复 action,这个 action 会将前一个动作作为他的参数。
		@param repeatTimes repeatTimes
		@param action action 
		*/
		repeat(repeatTimes: number, action?: Action|Tween): Tween;		
		/**
		!#en
		Add an repeat forever action
		This action will integrate before actions to a sequence action as their parameters.
		!#zh
		添加一个永久重复 action,这个 action 会将前一个动作作为他的参数。
		@param action action 
		*/
		repeatForever(action?: Action|Tween): Tween;		
		/**
		!#en
		Add an reverse time action.
		This action will integrate before actions to a sequence action as their parameters.
		!#zh
		添加一个倒置时间 action,这个 action 会将前一个动作作为他的参数。
		@param action action 
		*/
		reverseTime(action?: Action|Tween): Tween;		
		/**
		
		@param target the target to animate 
		*/
		tween(target?: any): Tween;	
	}	
	/** 
	 * 
	 *导出 tween方法 
	 * 
	 * */
	export  function tween(target?: any): Tween;

    type Ease = "linear" | "fade" |
        "quadIn" | "quadOut" | "quadInOut" | "quadOutIn" |
        "cubicIn" | "cubicOut" | "cubicInOut" | "cubicOutIn" |
        "quartIn" | "quartOut" | "quartInOut" | "quartOutIn" |
        "quintIn" | "quintOut" | "quintInOut" | "quintOutIn" |
        "sineIn" | "sineOut" | "sineInOut" | "sineOutIn" |
        "expoIn" | "expoOut" | "expoInOut" | "expoOutIn" |
        "circIn" | "circOut" | "circInOut" | "circOutIn" |
        "elasticIn" | "elasticOut" | "elasticInOut" | "elasticOutIn" |
        "backIn" | "backOut" | "backInOut" | "backOutIn" |
        "bounceIn" | "bounceOut" | "bounceInOut" | "bounceOutIn";

    type tweenOpts = {
        progress?: Function;
        easing?: Function | Ease;
    }

Cocos Creator 开篇

阅读数 550

没有更多推荐了,返回首页