一、图片
先是滑动按钮:
然后是滑动条,分别是空状态(按钮在最左边)和满状态(按钮在最右边),画在一个精灵(sprite)的两个帧(frame):
那个十字形是原点。
二、代码
新建一个obj_slider。在create事件里需要声明的变量:
value = 0; // 按钮位置,默认在最左侧
max_value = 1;
selected = false; // 按钮是否被选中
draw事件:
draw_self(); // 先画一个空滑动条
draw_sprite_part(sprite_index, 1, 0, 0, sprite_width*value, sprite_height, x, y-sprite_get_yoffset(sprite_index)); // 根据value的值画部分满滑动条
draw_sprite(spr_slider_button, 0, x+sprite_width*value, y); // 画按钮
逻辑上没什么好讲的,注意坐标对齐就好。
step事件里面主要判断鼠标有没有选中按钮。
// 若按下鼠标左键
if (mouse_check_button_pressed(mb_left)) {
var button_x = x+sprite_width*value;
var button_y = y;
var button_radius = sprite_get_width(spr_slider_button) / 2;
// 判断鼠标位置是否在按钮上
if (point_in_circle(mouse_x, mouse_y, button_x, button_y, button_radius)) {
selected = true;
}
}
// 若未按住鼠标左键,则按钮未选中
if (!mouse_check_button(mb_left)) {
selected = false;
}
// 若选中按钮
if (selected) {
value = clamp((mouse_x-x)/sprite_width, 0, max_value);
event_user(0); // 自定义事件
}
重写user事件,就能让不同的滑动条物体实现不同的效果。
一些记录:
1.使用with(object)会遍历房间中所有的object,并对每一个执行代码。
三、自行改造
这种滑动条应该更多地用在设置中改变音量等。那么,能不能改造成类似网页右端的滑动条,能够滑动查看整个页面的不同部分?明天试试。
————————
每天发内容含金量不高的日志我会不会有刷屏的嫌疑(
暂无关于此日志的评论。