입심 소스는 세 가지 콜백 구성되어있다 :
- 하나는 소스가 폴링하기 전에 준비가되어 있는지 확인 (그리고
poll
전화를 피하기) 소스가 여전히 폴링 후 준비가되었는지
- 하나 확인하기
- 하나는 소스 확인하고 매우 간단하게 이벤트를 파견을 가질 수 첨부 된 콜백
를 파견합니다. 이것은 매우 기본적인
var source = new SDLSource();
source.add_callback ((event) => {
// handle event here
return Source.CONTINUE;
});
source.attach ([email protected]());
:
public delegate bool SDLSourceFunc (SDL.Event event);
public class SDLSource : Source
{
public SDL.Event event;
public bool prepare (out uint timeout)
{
timeout = 0;
return true;
}
public bool check()
{
return SDL.Event.poll (out event) > 0;
}
public bool dispatch (SourceFunc callback)
{
return ((SDLSourceFunc) callback) (event);
}
public void add_callback (SDLSourceFunc callback)
{
base.add_callback ((SourceFunc) callback);
}
}
그런 다음 Source.CONTINUE
와 루프 것입니다 소스는 SDL.EventMask
와 SDL.peep
A를 특정 이벤트를 필터링 할 수 있습니다. 단일 소스에 대해 여러 이벤트를 전달하고 관련 파일 설명자를 첨부하는 것이 더 효율적입니다. 당신은 몇 가지 비동기 코드를 사용하는 경우
, 당신은 Source
파견에서 직접 코 루틴 웨이크 업 할 수 있습니다
public async void next_event_async()
{
var source = new SDLSource();
source.attach ([email protected]());
source.add_callback (handle_event_async.callback);
yield;
return source.event;
}
당신이하려는 일이 불분명합니다.그리기를 원하면 윈도우에 다시 그리기 콜백을 추가하면 충분합니다 (그리고 어떤 일이 발생하면 표시되는 이미지를 변경해야 함). 더 일반적인 것들을 위해 타이머와 유휴 기능이 있습니다. – keltar