/ / Wie animiere ich einen TextLayer in Pebble C? - pebble-sdk, cloudpebble

Wie animiere ich einen TextLayer in Pebble C? - Kieselstein, Wolkenkiesel

Ich habe kürzlich angefangen, mein erstes Watchface zu codieren, aber ich kann es nicht dazu bringen, einen TextLayer zu animieren.

Es gibt ein Tutorial zum Animieren von Ebenen Hier aber ich weiß nicht, wie ich das ändern soll, um TextLayers zu animieren.

Ich habe es versucht, aber dann wird die Ebene animiert und der Text ist weg:

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

Danke für Ihre Hilfe

Antworten:

2 für die Antwort № 1

Hier ist eine vollständige Beispiel-App, die eine Textebenen-Animation zeigt:

#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();
}