0

Pebble Time ウォッチフェイスの構成を最適化しようとしています。文字列の比較を避けるために、すべての GColor 値を配列に入れましたが、まったく機能しません:(

配列:

static uint8_t colors[] = {
GColorInchwormARGB8,    //1
GColorSpringBudARGB8,    //2
GColorBrightGreenARGB8,    //3
GColorMintGreenARGB8,    //4
GColorScreaminGreenARGB8,    //5
GColorGreenARGB8,    //6
GColorMalachiteARGB8,    //7
};

構成からデータを読み取ります。

static void in_recv_handler(DictionaryIterator *iterator, void *context)
{

  Tuple *t = dict_read_first(iterator);

  while (t != NULL){
    switch (t -> key){
      //++++++ background color +++++++
      case bgColor:
       persist_write_int(bgColor, t->value->int8);
      break;
      //++++++ time color ++++++
      case timeColor:
        persist_write_int(timeColor, t->value->int8);
      break;
    } 
     t = dict_read_next(iterator);
  } 
}

uint8、uint16、uint32、int8、int16、int32 を試しました。int32 を使用すると、時計がクラッシュします。

レイヤーに色を設定します。

time_color = (GColor)colors[persist_read_int(timeColor)];

私が使用する場合:

time_color = (GColor)colors[4];

正しい色が表示されます。

HTML ページの値:

 <select id="bg_select">
          <option class="inchworm" value="0">Inchworm</option>
          <option class="springBud" value="1">Spring Bud</option>
          <option class="brightGreen" value="2">Bright Green</option>
          <option class="mintGreen" value="3">Mint Green</option>
    </select>

誰でもそれを修正するための提案はありますか? 私は何を間違っていますか?

4

1 に答える 1

1

イベントの正確な順序によっては、色の値がまだ保存されていない場合があります。値が存在するかどうかを確認していますか?

if(persist_exists(timeColor)) {
  time_color = (GColor)colors[persist_read_int(timeColor)];
}
于 2015-08-29T15:08:24.490 に答える