(从零开始)Cocos2.4 缓动之报错的震动效果

本文介绍了在Cocos2.4中为方块匹配错误时实现震动效果的过程,详细记录了调试遇到的问题及解决方案。

要求

cocos2.4在做多个方块匹配错误时的震动效果时,调试了很久,这里记录一下

代码示例

resetBlocks(array_node){
    for(let i = array_node.length-1; i >= 0; i--) {
        let ts_block = array_node[i].getComponent(blcok)
        let pos = array_node[i].getPosition()
        //外部序号相等,且为底的方块,回到原位
        //修改颜色为红色
        ts_block.changeColor(true)

        //播放单次音效
        cc.audioEngine.setEffectsVolume(0.5);
        cc.audioEngine.playEffect(this.arr_audio[1],false)

        //缓动,右->左->右->左移动,且距离变大,时间变短,最后快速回到原点,形成错误时的震动效果
        cc.Tween.stopAllByTarget(ts_block)
        cc.tween(array_node[i])
        .to(0.1,{position: new cc.Vec3(pos.x+5,pos.y,0)},{easing:"quadInOut"})
        .to(0.1,{position: new cc.Vec3(pos.x-5,pos.y,0)},{easing:"quadInOut"})
        .to(0.05,{position: new cc.Vec3(pos.x+8,pos.y,0)},{easing:"quadInOut"})
        .to(0.05,{position: new cc.V
### Cocos Creator 2.4 中 iOS 震动 API 的使用 在 Cocos Creator 2.4 版本中,要实现调用 iOS 设备的震动功能,可以通过 JavaScript 提供的相关接口来完成。以下是关于如何在 Cocos Creator 2.4 中使用 iOS 震动 API 的详细介绍。 #### 支持情况 Cocos Creator 自身并不直接提供跨平台的震动 API,但在某些平台上(如 Web 和 Native),可以借助第三方插件或者原生扩展来实现震动效果。对于 iOS 平台,开发者通常需要通过自定义模块的方式调用系统的震动服务[^1]。 --- #### 实现方式 ##### 方法一:使用 `vibrate` 插件 如果目标是支持多个平台(包括 Android 和 iOS),可以考虑引入社区中的通用振库。例如,在项目中集成 npm 包 `vibration` 或者类似的解决方案: ```javascript // 调用震动函数 if (cc.sys.isNative && cc.sys.os === cc.sys.OS_IOS) { jsb.reflection.callStaticMethod("com/example/MyClass", "vibrateDevice"); } else if (cc.sys.isBrowser) { navigator.vibrate(500); // 浏览器端模拟震动 } ``` 注意:此方法适用于已经封装好的 JSB 接口场景下运行。 --- ##### 方法二:编写原生脚本并绑定到引擎 为了更精确地控制 iOS 上的震动行为,建议开发人员创建一个新的 Objective-C 文件用于处理硬件交互逻辑,并将其暴露给 JavaScript 层面访问。 ###### 步骤说明: 1. **准备 Xcode 工程** 打开由 Cocos Creator 构建出来的 Xcode 项目文件夹。 2. **新增类文件** 创建名为 `VibratorManager.m/.h` 的一对头文件与实现文件,内容如下所示: ```objc // VibratorManager.h #import <UIKit/UIKit.h> @interface VibratorManager : NSObject +(void)vibrate; @end ``` ```objc // VibratorManager.m #import "VibratorManager.h" #import <AudioToolbox/AudioServices.h> @implementation VibratorManager +(void)vibrate{ AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); } @end ``` 3. **注册至 JSBridge** 修改 `AppController.mm` 添加以下代码片段以便让其能够被 JavaScript 命令触发: ```cpp extern "C" void vibrate() { [VibratorManager vibrate]; } ``` 4. **JavaScript 调用** 完成以上设置之后就可以轻松地从游戏内部发起请求了: ```javascript if (jsb) { jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "vibrate"); } else { console.log('Not supported on this platform.'); } ``` --- #### 注意事项 - 确认项目的构建环境已正确安装所需的 JDK、NDK 及 Gradle 版本[^1]。 - 对于真机测试而言,请务必连接实际物理装置而非单纯依赖模拟器来进行验证工作。 - 如果计划发布应用商店,则需额外留意 Apple 关于隐私政策方面的规定——即告知用户为何以及何时会启用此类敏感权限。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值