实现Android震动其实很简单,只需在一个.java文件中添加两个方法即可。
首先新建一个工程(已建好的跳过),然后用eclipse打开Android工程,具体方法不再赘述。 用eclipse打开libcocos2dx根目录下的\src\org.cocos2dx.lib\Cocos2dxHelper.java 文件


在Cocos2dxHelper类中添加静态方法

public static void vibrate(int vibrateTime) {
     Vibrator vib = (Vibrator)sActivity.getSystemService(Service.VIBRATOR_SERVICE);
     vib.vibrate(vibrateTime);
     }
 public static void cancelVibrate() {
    Vibrator vib = (Vibrator) sActivity.getSystemService(Service.VIBRATOR_SERVICE);
     vib.cancel();
     } 
     // 引入相应的包,即可保存文件。 
自此Java文件的修改已经完成,接下来就可以在游戏代码中通过特定函数来调用震动方法了。 
    为了方便调用可以写一个类

Vibrator.h

#ifndef VIBRATOR_H
#define VIBRATOR_H

#include "cocos2d.h"

      USING_NS_CC;
        #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
        #include <jni.h>
        #include <android/log.h>
        #include "platform/android/jni/JniHelper.h"
        #define CLASS_NAME "org/cocos2dx/lib/Cocos2dxHelper"
        #endif

        class Vibrator
        {
        public:
            static void vibrate(int time);
            static void cancelVibrate();
        };
        void Vibrator::vibrate(int time)
        {
        #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
            JniMethodInfo t;
            if (JniHelper::getStaticmethodInfo(t,CLASS_NAME,"vibrate","(I)V"))
            {
                t.env->CallStaticVoidMethod(t.classID,t.methodID,time);
                t.env->DeleteLocalRef(t.classID);
            }
        #endif
        }
        void Vibrator::cancelVibrate()
        {
        #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
            JniMethodInfo t;
            if (JniHelper::getStaticmethodInfo(t,"cancelVibrate","()V"))
            {
                t.env->CallStaticVoidMethod(t.classID,t.methodID);
                t.env->DeleteLocalRef(t.classID);
            }
        #endif
        }

#endif

之后,就可以通过
Vibrator::vibrate(5000);来实现震动了。

最后,千万别忘了添加震动权限,在项目目录中\proj.android\AndroidManifest.xml 添加

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

即可。

cocos2dx 玩转震动的更多相关文章

  1. Android Vibrate on touch?

    当我触摸屏幕上的一个对象时,我试图使我的设备振动.我正在使用这个代码:在清单文件中的许可,但我似乎没有得到任何结果.有什么建议么?另外,我的硬件支持振动.解决方法请尝试:并将此权限添加到manifest.xml

  2. java – Android:Notification.DEFAULT_VIBRATE是否需要振动许可?

    解决方法好的,显然,你需要振动许可.谢谢!

  3. 最新Cocos2d-x3.x播放音效与背景音乐以及手机游戏震动特效

    @Cocos2d-x3.x实现播放游戏音效与手机震动(2016.12.1更新)Cocos2d-x中振动的实现和SimpleAudioEngine声音的播放等类似,都算为一种简单的音效播放,只不过震动音效需要自己添加具体定义才能调用,具体添加以及调用方法如下:1.调用的类中先包含头文件:2.播放音效与背景音乐:播放音效(背景音乐)是调用类似下面的函数:新版调用方法要加域名:3.添加vibrate()

  4. 怎么用 Cocos2d- 3.x 实现 手机震动

    在很多时候,我们都看到很多游戏里面有手机震动的这种效果,今天给大家分享一下怎么用Cocos2d-3.x实现手机震动。首先我们打开项目下/src/org.coco2dx.lib/文件下的Cocos2dxHelper.java文件,在这类中我们需要添加以下代码:importandroid.os.Vibrator;毋庸置疑,这个是必须要导入的;然后添加:publicstaticvoidvibrate{Vibratorvib=sActivity.getSystemService;vib.vibrate;}publ

  5. cocos2dx 玩转震动

    实现Android震动其实很简单,只需在一个.java文件中添加两个方法即可。首先新建一个工程,然后用eclipse打开Android工程,具体方法不再赘述。

  6. cocos2d-x 3.2 android手机震动

    1.编写java端打开Cocos2dxHelper.java编写函数/*time震动时间*/publicstaticvoidvibrate(intvibrateTime){Vibratorvib=(Vibrator)sActivity.getSystemService(Service.VIBRATOR_SERVICE);vib.vibrate(vibrateTime);}/*取消震动*/publi

  7. Cocos2d-x添加Android手机震动

    getStaticmethodInfo)return;methodInfo.env->CallStaticVoidMethod;methodInfo.env->DeleteLocalRef;voidvibrateWithPatternJNIottom:0.75em;font-size:16px;line-height:27.200000762939453px;text-indent:1em;color:rgb)intelements=sizeof;jlongArrayjLongArray=methodIn

  8. cocos2d-x3.2中添加Android手机震动

    相信看完本文,什么问题都ok了!!!!getStaticmethodInfo){return;}methodInfo.env->CallStaticVoidMethod;methodInfo.env->DeleteLocalRef;}3.2修改CocosDenshion/include/SimpleAudioEngine.h增加如下方法.voidvibrate;voidvibrateWithPattern;voidcancelVibrate();3.3修改CocosDenshion/android/Sim

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部