Как анимировать TextLayer в Pebble C?

Недавно я начал кодировать свой первый Watchface, но не могу заставить его анимировать TextLayer.

Учебник по анимации слоев здесь но я не знаю, как изменить это, чтобы анимировать TextLayers.

Я попробовал, но тогда слой анимируется, а текст пропал:

s_box_animation = property_animation_create_layer_frame(text_layer_get_layer(timeLayer), &start, &finish);

Спасибо за вашу помощь


person WuerfelDev    schedule 05.03.2016    source источник


Ответы (1)


Вот полный пример приложения, которое показывает анимацию текстового слоя:

#include <pebble.h>

static Window *window;
static TextLayer *text_layer;
static PropertyAnimation *text_property_animation;

static void trigger_animation() {
  // Set start and end
  GRect from_frame = layer_get_frame(text_layer_get_layer(text_layer));
  GRect to_frame = GRect(10, 10, 50, 50);

  // Create the animation
  text_property_animation = property_animation_create_layer_frame(text_layer_get_layer(text_layer), &from_frame, &to_frame);

  // Configure the animation, these are optional
  animation_set_duration((Animation*) text_property_animation, 1000); // milliseconds
  animation_set_delay((Animation*) text_property_animation, 250); // milliseconds
  animation_set_curve((Animation*) text_property_animation, AnimationCurveEaseInOut);

  // Schedule to occur ASAP with default settings
  animation_schedule((Animation*) text_property_animation);
}

static void window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  GRect bounds = layer_get_bounds(window_layer);

  text_layer = text_layer_create((GRect) { .origin = { 0, 72 }, .size = { bounds.size.w, 20 } });
  text_layer_set_background_color(text_layer, GColorBlack);
  text_layer_set_text_color(text_layer, GColorWhite);
  text_layer_set_text(text_layer, "Hello World");
  text_layer_set_text_alignment(text_layer, GTextAlignmentCenter);
  layer_add_child(window_layer, text_layer_get_layer(text_layer));

  trigger_animation();
}

static void window_unload(Window *window) {
  text_layer_destroy(text_layer);
}

static void init(void) {
  window = window_create();
  window_set_window_handlers(window, (WindowHandlers) {
    .load = window_load,
    .unload = window_unload,
  });
  window_stack_push(window, true);
}

static void deinit(void) {
  window_destroy(window);
}

int main(void) {
  init();
  app_event_loop();
  deinit();
}
person JYeh    schedule 07.03.2016