SDL: ข้อยกเว้น SDL_WaitEvent หรือไม่

(ฉันยังคงอยู่ในเส้นทางเดียวกันกับคำถามสองข้อสุดท้ายที่ฉันถาม ฉันไม่สามารถตีจุดที่ถูกต้องได้!)

อย่างไรก็ตาม คำถามของฉันคือ: ฉันจะเพิ่มหรืออนุญาตให้ลงทะเบียนบางสิ่งโดย SDL_WaitEvent ได้อย่างไร

โปรแกรมปัจจุบันที่ฉันกำลังดำเนินการอยู่ต้องรอให้ผู้ใช้ป้อนข้อมูลก่อนจึงจะกลับสู่เกมลูปได้ ตอนนี้ปัญหาในการใช้ PollEvent คือฉันถูกสแปมด้วยรูปภาพจำนวนมาก และขณะนี้ไม่มีทางที่จะรออินพุตได้เลย ปัญหาของ WaitEvent คือมันรอเหตุการณ์ใดๆ ก็ตาม เมาส์ คีย์บอร์ด หรืออะไรก็ได้

ฉันจะเพิ่มข้อยกเว้นให้กับ WaitEvent ได้อย่างไร หรือพวกคุณรู้วิธีใดที่จะรอให้ผู้ใช้ป้อนข้อมูล?

กรุณาระบุให้เจาะจง

และถ้ามันช่วยได้ นี่คือ "gameLoop" ของฉัน

void game::startLoop()
{
    while(QUIT == false)
    {
        getRoomUpdate();
        applySurface(-15, 280, zombie_lefthand, buffer);
        applySurface(455, 280, zombie_righthand, buffer);

        SDL_Flip(buffer);

        while(SDL_WaitEvent(&gameEvent)) //Exceptions!? Wait for input!?
        {
            switch(gameEvent.type)
            {
                case SDL_QUIT:
                QUIT = true;
                break;
            }
        }
    }
}

person Lemmons    schedule 20.12.2010    source แหล่งที่มา


คำตอบ (1)


คุณอาจต้องการฟังก์ชัน SDL_EventState() เอกสารวิกิที่แย่มากอาจช่วยให้คุณได้รับข้อมูลที่รวดเร็วขึ้น แนวคิดพื้นฐานคือคุณเพียงแค่ตั้งค่า SDL_IGNORE หรือ SDL_ENABLE ขึ้นอยู่กับว่าคุณต้องการละเว้นหรือรับเหตุการณ์บางอย่าง

person Justin Spahr-Summers    schedule 20.12.2010