2016-03-05 31 views
0

我最近開始編寫我的第一個Watchface,但不是我不能讓它動畫TextLayer。如何動畫在Pebble C中的TextLayer?

有一個動畫層的教程here,但我不知道如何修改它以動畫TextLayers。

我試了一下,但隨後該層的動畫和文字消失:

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

感謝您的幫助

回答

2

這裏有一個完整的示例應用程序,顯示文本層動畫:

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