[SDL2尝试使用班次时访问冲突读取位置错误?

问题描述 投票:0回答:1

因此,我试图为我在SDL2中制作的辅助项目制作键盘处理程序。在网上搜索了一些帮助之后,这就是我想到的。

bool Keys[322];
void init() override {
    for (bool i : Keys) {
        i = false;
    }
}

void update() override {

    if (CRS::event.type == SDL_KEYDOWN) {
        Keys[CRS::event.key.keysym.sym] = true;

    }

    if (CRS::event.type == SDL_KEYUP) {
        Keys[CRS::event.key.keysym.sym] = false;

    }

    if (Keys[SDLK_w]) {
        Transform->Velocity.y = 0; //moves the player up
    }
}

上面的代码在大多数情况下都可以正常工作,但是只要我尝试使用SDL视为修饰符的任何键(例如,左移,大写锁定,Ctrl,Alt等),就会出现问题。每当我什至触摸这些按钮之一时,都会收到访问冲突读取位置错误。谁能告诉我为什么呢?如果我想使用shift,capslock等功能,该怎么做?

c++ sdl keyboard-events
1个回答
0
投票

因此,在意识到这可能不是我想要实现我想要的方式并改为使用SDL_GetKeyboardStates函数之后,我决定取消我的代码,它像一种魅力一样工作。

© www.soinside.com 2019 - 2024. All rights reserved.