Cocos2D-X学习13:交互功能——鼠标和键盘

来源:互联网 发布:企政oa软件下载 编辑:程序博客网 时间:2024/04/30 07:49

在Cocos2D-X中还支持鼠标和键盘的输入,下面将对其进行学习。

下面是一个使用鼠标键盘的示例:

    Size visibleSize = Director::getInstance()->getVisibleSize();    Vec2 origin = Director::getInstance()->getVisibleOrigin();    //在屏幕上显示指针团案    this->mouse = Sprite::create("mouse.png");    this->mouse->setScale(0.3f);    this->addChild(mouse);    auto myKeyListener = EventListenerKeyboard::create(); //创建事件监听器监听键盘事件    //键盘按键按下时的响应    myKeyListener->onKeyPressed = [](EventKeyboard::KeyCode keycode, cocos2d::Event *event)    {        CCLOG("key is pressed, keycode is %d", keycode);    };    //键盘按键弹回时的响应    myKeyListener->onKeyReleased = [](EventKeyboard::KeyCode keycode, cocos2d::Event *event)    {        CCLOG("key is released, keycode is %d", keycode);    };    auto myMouseListener = EventListenerMouse::create();//创建事件监听器鼠标事件    //鼠标移动    myMouseListener->onMouseMove = [=](Event *event)    {        EventMouse* e = (EventMouse*)event;        this->mouse->setPosition(e->getCursorX(), e->getCursorY() + visibleSize.height);    };    //鼠标被按下    myMouseListener->onMouseDown = [=](Event *event)    {        this->mouse->setScale(0.2f); //鼠标按键按下,屏幕上的“箭头”尺寸缩小    };    //鼠标按键弹起    myMouseListener->onMouseUp = [=](Event *event)    {        this->mouse->setScale(0.3f); //鼠标按键抬起,屏幕上的“箭头”尺寸放大    };    //将事件监听器与场景绑定    _eventDispatcher->addEventListenerWithSceneGraphPriority(myKeyListener, this);    _eventDispatcher->addEventListenerWithSceneGraphPriority(myMouseListener, this);

可以看到,使用鼠标键盘进行输入实际也是通过Cocos2d-x中提供的监听器实现的,非常简单。
键盘监听器EventListenerKeyboard的响应分为onKeyPressed按键按下时的响应和onKeyReleased按键弹回时的响应,这里都是返回按键对应的ASCII码,在具体使用时,只需要根据ASCII码判断对应按键即可。这里将按键事件分为按下时和弹回时两种响应,其应用场景不同,比如在动作游戏中,对操作的实时性要求高,为了保证游戏的打击感,使用按键按下时响应;而在剧情跳过、菜单确认等操作,则一般选择按键弹起时响应。
鼠标监听器EventListenerMouse的响应分为onMouseMove鼠标移动、onMouseDown鼠标按键按下和onMouseUp鼠标按键弹回等响应,这里鼠标移动的响应就是根据鼠标的位置来改变图像位置,鼠标按键按下的响应是将图像缩小,而弹回后将图像放大回原图。在之前学习触摸中,会发现很多鼠标的操作和触摸是一样的,也就是说可以通过触摸来实现鼠标的一部分功能,但两者是有区别的。在触摸事件中,onTouchBegan被触发时,onTouchMoved事件才能被触发,也就是必须有触摸才能进行拖动操作。而在鼠标事件中,onMouseMove事件是独立的,只要鼠标指针的坐标改变,就会触发。

运行效果图:
这里写图片描述
这里写图片描述

0 0
原创粉丝点击