“我原来”在收到 NAVIGATOR_WINDOW_ACTIVE 时必须调用一些东西:
bps_event_t *event = NULL;
for (;;)
{
if (BPS_SUCCESS != bps_get_event(&event, 0))
{
fprintf(stderr, "bps_get_event failed\n");
break;
}
if (event)
{
int domain = bps_event_get_domain(event);
if (domain == navigator_get_domain())
{
UINT ID = bps_event_get_code(event);
if (ID == NAVIGATOR_EXIT)
{
exit_application = 1;
}
else if(ID == NAVIGATOR_WINDOW_ACTIVE)
{
SetRotationDammIt();
}
}
}
}
//...
void SetRotationDammIt()
{
int angle = 90;
screen_set_window_property_iv( screen_win, SCREEN_PROPERTY_ROTATION, &angle);
navigator_set_orientation(NAVIGATOR_RIGHT_UP, NULL);
}
不过,还有几件事需要解决。您需要将 X 与 Y 切换以获取分辨率,因为窗口本身仍处于纵向模式(X < Y),并且您还必须使用以下输入进行 switch-aroo:
float RatioX = TouchX / PortraitX;
float RatioY = TouchY / PortraitY;
Vector2 Res( PortraitY, PortraitX );
Vector2 RealCoords( RatioX * Res.x, RatioY * Res.y );
这似乎只发生在最新的模拟器上(版本 10.1.0.1720 并注意我没有物理设备,以防万一这对你不起作用),在旧的模拟器上它只适用于清单设置(出于某种原因),但我需要这个来播放 .wav 文件,因为旧文件不能。