说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
官方的手册(免费获取)Pxx=该手册的对应页码xx
github-awtk
关于 image_animation_t 控件(图片动画控件) 介绍,对应书 P164。(书中还有更详细内容).
①指定一个图片前缀,依次显示指定序列的图片,从而形成动画效果。
②image_animation_t
是 widget_t
的子类控件,widget_t
的函数均适用于 image_animation_t
控件。
#include "awtk.h"
static ret_t on_click_fast(void* ctx, event_t* e) {
widget_t* widget = WIDGET(ctx);
image_animation_t* image_animation = IMAGE_ANIMATION(widget);
int32_t interval = image_animation->interval - 10;
if(interval < 16) {
interval = 16;
}
image_animation_set_interval(widget, interval); //设置播放间隔时间
log_debug("interval:%d\n", interval);
return RET_OK;
}
static ret_t on_click_slow(void* ctx, event_t* e) {
widget_t* widget = WIDGET(ctx);
image_animation_t* image_animation = IMAGE_ANIMATION(widget);
int32_t interval = image_animation->interval + 10;
image_animation_set_interval(widget, interval); //设置播放间隔时间
log_debug("interval:%d\n", interval);
return RET_OK;
}
static ret_t on_click_start_pause(void* ctx, event_t* e) {
widget_t* widget = WIDGET(ctx);
image_animation_t* image_animation = IMAGE_ANIMATION(widget);
if (image_animation_is_playing(widget)) { //判断是否在播放
widget_set_prop_str(widget, WIDGET_PROP_EXEC, WIDGET_EXEC_PAUSE_ANIMATOR); //设置字符串格式的属性
widget_set_text_utf8(WIDGET(e->target), "play"); //设置控件的文本。只是对widget_set_prop的包装,文本的意义由子类控件决定。
} else {
widget_set_prop_str(widget, WIDGET_PROP_EXEC, WIDGET_EXEC_START_ANIMATOR); //设置字符串格式的属性
widget_set_text_utf8(WIDGET(e->target), "puase"); //设置控件的文本。只是对widget_set_prop的包装,文本的意义由子类控件决定
}
log_debug("on_click_start_pause\n");
return RET_OK;
}
ret_t application_init() {
widget_t* image_animation = NULL;
widget_t* win = window_create(NULL, 0, 0, 0, 0); //创建window对象
widget_t* fast = button_create(win, 0, 0, 0, 0); //创建button对象
widget_t* slow = button_create(win, 0, 0, 0, 0); //创建button对象
widget_t* start_pause = button_create(win, 0, 0, 0, 0); //创建button对象
image_animation = image_animation_create(win, 10, 10, 200, 200); //创建image_animation对象
image_animation_set_image(image_animation, "ani"); //设置图片前缀。
image_animation_set_interval(image_animation, 50); //设置播放间隔时间:50ms
image_animation_set_range_sequence(image_animation, 1, 9); //设置播放序列。比如image为”fire”,start_index为0, end_index为99, 将依次播放”fire0”, …, “fire99”。若指定的图片不存在,则重复上一张图片
image_animation_play(image_animation); //播放
widget_set_self_layout_params(image_animation, "center", "10", "200", "200");//设置控件自己的布局(缺省布局器)参数(过时,请用widget_set_self_layout)。
widget_set_tr_text(fast, "fast"); //获取翻译之后的文本,然后调用widget_set_text。
widget_set_self_layout_params(fast, "10", "b:10", "20%", "30"); //设置控件自己的布局(缺省布局器)参数(过时,请用widget_set_self_layout)。
widget_on(fast, EVT_CLICK, on_click_fast, image_animation); //注册指定事件的处理函数。
widget_set_tr_text(slow, "slow"); //获取翻译之后的文本,然后调用widget_set_text。
widget_set_self_layout_params(slow, "c", "b:10", "20%", "30"); //设置控件自己的布局(缺省布局器)参数(过时,请用widget_set_self_layout)。
widget_on(slow, EVT_CLICK, on_click_slow, image_animation); //注册指定事件的处理函数。
widget_set_tr_text(start_pause, "pause"); //获取翻译之后的文本,然后调用widget_set_text。
widget_set_self_layout_params(start_pause, "r:10", "b:10", "20%", "30"); //设置控件自己的布局(缺省布局器)参数(过时,请用widget_set_self_layout)。
widget_on(start_pause, EVT_CLICK, on_click_start_pause, image_animation);//注册指定事件的处理函数。
return RET_OK;
}
1.生成资源:sh assets_gen.sh
,添加新资源故需重新生成资源。【因为此处并不使用.data文件,故可省略】
2.编译:scons
3.执行:./bin/demo