Почему окно программы Mac OS SDL2 не отвечает?

Основываясь на ответе @ balupton:

$(document).on('focus', '[contenteditable]', e => {
	const self = $(e.target)
	self.data('before', self.html())
})
$(document).on('blur', '[contenteditable]', e => {
	const self = $(e.target)
	if (self.data('before') !== self.html()) {
	  self.trigger('change')
	}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2
задан genpfault 28 March 2019 в 17:53
поделиться

1 ответ

Чтобы программа, написанная на SDL, «отвечала» на операционную систему, вы должны вернуть SDL управление, чтобы она обрабатывала системные сообщения и возвращала их вам как события SDL (события мыши, события клавиатуры и т. Д.) .

Чтобы сделать это, вы должны добавить цикл, который использует SDL_PollEvent, который должен выглядеть примерно так

while(true)
{
    SDL_Event e;
    while (SDL_PollEvent(&e)) 
    {
        // Decide what to do with events here
    }

    // Put the code that is executed every "frame". 
    // Under "frame" I mean any logic that is run every time there is no app events to process       
}

Есть некоторые специальные события, такие как SDL_QuiEvent, которые вам нужно обработать, чтобы иметь способ закрыть ваше приложение. Если вы хотите справиться с этим, вы должны изменить свой код, чтобы он выглядел примерно так:

while(true)
{
    SDL_Event e;
    while (SDL_PollEvent(&e)) 
    {
        if(e.type == SDL_QUIT)
        {
            break;
        }
        // Handle events
    }

    // "Frame" logic     
}
0
ответ дан Egor Shkorov 28 March 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: