0

我最近开始编写我的第一个 Watchface,但不是我无法让它为 TextLayer 设置动画。

这里有一个动画图层的教程,但我不知道如何修改它来为 TextLayers 设置动画。

我试过了,但是图层是动画的并且文本消失了:

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

谢谢你的帮助

4

1 回答 1

3

这是一个显示文本层动画的完整示例应用程序:

#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();
}
于 2016-03-07T14:12:53.400 回答