一个非常基本的问题,我已经试着自己解决了几个小时,但还是解决不了。
因此,我正在为Pebble制作我的第一个手表表盘,我希望手表每小时都会嗡嗡作响(振动)。你还记得有些电子表在半夜三点钟会发出“嘟嘟声”吗?嗯,类似的东西。
我想出最简单的方法是:
if (tick_time->tm_min == 0) {
vibes_short_pulse();
}它工作得很好。现在我有了一个小bug。在这一分钟内,如果重新创建了窗口(例如,如果您转到时间线或打开一个watchapp并快速返回到我的钟表面),则会再次调用update_time(),因此它会再次发出嗡嗡声。这不是一个很大的bug,但有点让人讨厌。
我试着使用布尔标志来解决这个问题。
static bool vibed = false;然后,
if (tick_time->tm_min != 0) {
vibed = false;
}
if (tick_time->tm_min == 0 && vibed == false) {
vibes_short_pulse();
vibed = true;
}但显然,每次重新创建窗口时,无论发生什么情况,标志都会回到"false“。
我不知道怎么解决这个问题。如果你能给我一个提示,我将不胜感激。谢谢!
发布于 2015-11-10 06:54:50
不是检查分钟是否为零,而是检查小时更改事件,例如:
void tick_handler(struct tm *tick_time, TimeUnits units_changed)
{
// Some other code that display/process time
// on hour change do a short buzz
if (units_changed & HOUR_UNIT) {
vibes_short_pulse();
}
} 发布于 2015-12-25 00:35:40
我只会记得你最后一次嗡嗡作响的那个小时。只有在不同的情况下才会发出嗡嗡声。所以:
//initialize to impossible hour so it works the first time
static int lastBuzzHour=-1;
if (tick_time->tm_hour !=lastBuzzHour) {
vibes_short_pulse();
// now that you've buzzed, remember it so you don't retrigger
lastBuzzHour=tick_time->tm_hour;
}https://stackoverflow.com/questions/33060116
复制相似问题