游戏手柄 游戏手柄什么牌子好

概述

本教程将向你介绍在Cocos2d-x v3.2 rc0中如何支持iOS和Android的游戏控制器。

游戏控制器的测试

iOS

使用以下步骤测试游戏控制器

Android

12345$ cd cocos2dx_root/build$ ./android-build.py game-controller-test -p16$ adb connect IP_OF_TV$ adb install../tests/game-controller-test/proj.android//bin/GameControllerTest-debug.apk$ adb shell am start -norg.cocos2dx.game_controller_test/.AppActivity

当你按下控制器设备上的任意键时,你的屏幕上对应的键就会高亮显示。如下图所示:

游戏控制器事件

在Cocos2d-x中,游戏控制器的事件监听器叫做EventListenerController。它一共有6个控制器监听事件:onConnected,onDisconnected,onKeyDown,onKeyUp,onAxisEvent和onKeyRepeat。onAxisEvent是摇杆变化时的监听事件。KeyCode指互动中键的类型。下面的列表和图片中显示了KeyCode和控制器上对应的键。

1234567891011121314151617181920212223242526272829303132333435enum Key{JOYSTICK_LEFT_X= 1000,JOYSTICK_LEFT_Y,JOYSTICK_RIGHT_X,JOYSTICK_RIGHT_Y,BUTTON_A,BUTTON_B,BUTTON_C,BUTTON_X,BUTTON_Y,BUTTON_Z,BUTTON_DPAD_UP,BUTTON_DPAD_DOWN,BUTTON_DPAD_LEFT,BUTTON_DPAD_RIGHT,BUTTON_DPAD_CENTER,BUTTON_LEFT_SHOULDER,BUTTON_RIGHT_SHOULDER,AXIS_LEFT_TRIGGER,AXIS_RIGHT_TRIGGER,BUTTON_LEFT_THUMBSTICK,BUTTON_RIGHT_THUMBSTICK,BUTTON_START,BUTTON_SELECT,BUTTON_PAUSE,KEY_MAX};

一个键有3种状态属性。如果isAnalog为真,那么value值将可能是一个从-1到1的浮点数。如果isAnalog为假,value将是像0或1这样确定的一个数。这些都取决于你的键和游戏控制器。举个例子:如果你的键是JOYSTICK_LEFT_X,那么其isAnalog将为真,并且value值将是一个从-1到1的代表左操纵杆X轴值的浮点数。

123456typedef struct_keyStatus{boolisPressed;floatvalue;boolisAnalog;}KeyStatus;

下面的代码展示了如何在项目中使用这些事件。

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071voidHelloWorld::registerControllerListener(){//createan evnetListenerController_listener= EventListenerController::create();//bindonConneected event call function_listener->onConnected=CC_CALLBACK_2(HelloWorld::onConnectController,this);//binddisconnect event call function_listener->onDisconnected=CC_CALLBACK_2(HelloWorld::onDisconnectedController,this);//bindonKeyDown event callfunction_listener->onKeyDown= CC_CALLBACK_3(HelloWorld::onKeyDown,this);//bindonKeyUp event callfunction_listener->onKeyUp= CC_CALLBACK_3(HelloWorld::onKeyUp,this);//bindonAxis event call function, onAxis will be called when analog stickis changed_listener->onAxisEvent= CC_CALLBACK_3(HelloWorld::onAxisEvent,this);//Activatethe listener into the event dispatcher_eventDispatcher->addEventListenerWithSceneGraphPriority(_listener,this);//Thisfunction should be called for iOS platformController::startDiscoveryController();}//Controller is the obejects of the Controller,keyCodemeans the keycode of the controller you click downvoidHelloWorld::onKeyDown(cocos2d::Controller *controller,int keyCode, cocos2d::Event *event){CCLOG("KeyDown:%d",keyCode);}voidHelloWorld::onKeyUp(cocos2d::Controller *controller,int keyCode, cocos2d::Event *event){//Youcan get the controller by tag, deviceId or devicename if there aremultiple controllersCCLOG("tag:%dDeviceId:%d DeviceName:%s", controller->getTag(),controller->getDeviceId(),controller->getDeviceName().c_str());CCLOG("KeyUp:%d",keyCode);}//The axis includes X-axis and Y-axis and its range isfrom -1 to 1. X-axis is start from left to right and Y-axis isbottom to top.voidHelloWorld::onAxisEvent(cocos2d::Controller*controller, int keyCode, cocos2d::Event*event){constauto& keyStatus =controller->getKeyStatus(keyCode);CCLOG("AxisKeyCode:%d Axis Value:%f", keyCode,keyStatus.value);}voidHelloWorld::onConnectController(Controller* controller,Event* event){CCLOG("Gamecontroller connected");}voidHelloWorld::onDisconnectedController(Controller* controller,Event* event){CCLOG("Gamecontroller disconnected");}bool HelloWorld::init(){////////////////////////////////1. super init firstif( !Layer::init() ){returnfalse;}............registerControllerListener();returntrue;}

如何将游戏控制器集成到iOS设备

1.连接设备

为了在iOS设备上支持游戏控制器,你需要iOS7.0以上的系统,并且还需要将控制器连接到你的iOS设备上。我们现在支持标准的iOS游戏控制器。不同的设备可通过类似的方法链接(请阅读游戏控制器的说明书)。在这个示例中,我们使用支持iPhone 5/5C/5s和第五代iPodtouch的PowerShell。连接PowerShell是很容易的,插入你的设备就可以了。

2.添加GameController.Framework

如果你是一个新手,并且不知道如何在iOS上创建一个Cocos2d-x项目,那么请先阅读How_to_Start_A_New_Cocos2D-X_Game一文。紧接着你就可以添加GameController.Framework(iOS7.0以上)了。如下图所示:

3.写下你的控制器事件

读取游戏控制器事件并在程序中编写自己的代码。然后在实际的设备上运行它。

注意:必须调用Controller::startDiscoveryController()方法,否则控制器将是无效的。我们建议你把它放在初始化函数中。

如何将游戏控制器集成到Android设备

1.连接设备

请阅读游戏控制器说明书来连接游戏控制器。Cocos2d-x v3.2支持标准的安卓游戏控制器、欧雅电视(OuyaTV)控制器、亚马逊防火电视(Amazon fireTV)控制器、莫加(Moga)控制器以及尼比奴(Nibiru)控制器。下面我们选择Nibiru的Android游戏控制器作为示例,为控制器的驱动程序下载并安装apk文件,然后打开应用程序来链接游戏手柄。

游戏手柄 游戏手柄什么牌子好

2.添加libControllerManualAdapter

如果你是一个新手,并且不知道如何在Android上创建一个Cocos2d-x项目,那请先阅读How_to_Build_an_Android_Project_with_Eclipse。游戏控制器部分的功能集成在一个叫做libControllerManualAdapter的独立lib上,使用时你必须将这个lib添加到你的eclipse安卓项目中。其路径是Cocos2d-xpath/platform/android/ControllerManualAdapter,它只能在AndroidSDK 4.1.2以上编译。

3.修改AppActivity.java

按照下面的示例修改AppActivity.java文件。

12345678910111213141516importorg.cocos2dx.lib.GameControllerActivity;import android.os.Bundle;public class AppActivityextends GameControllerActivity {@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//Thestandard controller,without doing anything special. e.g: AmazonFire TV//Manuallyspecify an adapter.this.connectController(DRIVERTYPE_NIBIRU);//this.connectController(DRIVERTYPE_MOGA);//this.connectController(DRIVERTYPE_OUYA);}}

4.编译并运行

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/182872.html

更多阅读

野营帐篷什么牌子好 户外帐篷

野营帐篷什么牌子好——简介野营必备选帐篷需要注意: 防水程度 尤其是帐篷底部的一个防水系数,一般选用双层帐篷,可以选购一款带行李仓的 方便放行李 ,那么野营帐篷什么牌子好呢?下面让我一起来了解下。野营帐篷什么牌子好——方法/步骤

如何选购洗面奶?洗面奶什么牌子好? 洗面奶什么牌子好

如何选购洗面奶?洗面奶什么牌子好?——简介洗面奶是洗脸最基础又最重要的东西,所以选错了洗面奶,有时候可能会给你的肌肤带来灭顶之灾哦,那么,现在我们就一起解析关于洗面奶的3个必知,也教你如何从市面上琳琅满目的各种洗面奶(保湿、美白、

如何选购避孕套?避孕套什么牌子好? 选购二胡什么牌子好

如何选购避孕套?避孕套什么牌子好?——简介为了婚姻生活的美满,正确选择安全套是不可或缺的环节,面对超市里品种繁多的“套套”,如何选购避孕套?避孕套什么牌子好?在此就向那些正在想购买的朋友,提供一点经验和参考。如何选购避孕套?避

烤箱什么牌子好 家用烤箱最简单食谱

?烤箱成为了目前家庭中最受欢迎的小家电之一,它利用电热元件发出的辐射热烤制食物,很好地替代了操作难、烟尘大的烤炉。那么烤箱什么牌子好?目前市面上流行的烤箱品牌有哪些呢??目前市场比较畅销的烤箱品牌:01.ACA电烤箱(1934年美国,全

笔记本什么牌子好? 什么牌子的笔记本好

笔记本什么牌子好?——简介随着社会的进步,笔记本开始进入千家万户,那么什么牌子的笔记本好呢?笔记本的选择过程中要注意什么呢?来看小编给大家分析一下。笔记本什么牌子好?——工具/原料笔记本笔记本什么牌子好?——方法/步骤笔记本什么

声明:《游戏手柄 游戏手柄什么牌子好》为网友岁拽起分享!如侵犯到您的合法权益请联系我们删除