5个版本
0.1.0 | 2020年11月28日 |
---|---|
0.1.0-alpha0.4 | 2020年8月10日 |
0.1.0-alpha0.3 | 2020年6月10日 |
0.1.0-alpha0.2 | 2020年6月7日 |
0.1.0-alpha0.1 | 2020年5月20日 |
#1386 in 游戏开发
每月 23 次下载
25KB
303 行
silver_animation
silver_animation 是一个简单且基本的Quicksilver动画系统。它允许您使用一系列图片,或者完全控制并渲染任何您想要的内容。
它还提供了一套特质,用于描述如何与动画交互。这些特质可以作为构建您自己的动画系统的基础。
维护
由于Quicksilver不再积极开发,我不再使用它。因此,我也停止了使用silver_animation。我仍将响应拉取请求等,但不要期待我会添加新功能。
示例
use quicksilver::{
geom::{Rectangle, Shape, Transform, Vector},
graphics::{Color, Graphics, Image},
run, Input, Result, Settings, Timer, Window,
};
use silver_animation::SimpleLinearConfig;
use silver_animation::LinearConfig;
fn main() {
run(
Settings {
size: Vector::new(800.0, 600.0).into(),
title: "Simple Linear Example",
..Settings::default()
},
app,
);
}
async fn app(window: Window, mut gfx: Graphics, mut inputs: Input) -> Result<()> {
let images = vec![
Image::load(&gfx, "img1.png").await?,
Image::load(&gfx, "img2.png").await?,
Image::load(&gfx, "img3.png").await?,
Image::load(&gfx, "img4.png").await?,
];
let timing = Timer::time_per_second(8.);
let mut simple_animation = SimpleLinearConfig { images, timing }.to_animation();
let image = Image::load(&gfx, "img1.png").await?;
let timing = Timer::time_per_second(30.);
let step_size: f32 = 5.;
let amount_of_steps = (255. / step_size).ceil() as usize;
let mut custom_animation = LinearConfig {
begin_state: image,
timing,
draw: |state, tick, gfx, location| {
gfx.draw_image_tinted(
state,
location,
Color::from_rgba(0, (step_size * tick as f32) as u8, 0, 1.0),
);
Ok(())
},
max_frames: |_| amount_of_steps,
}
.to_animation();
let simple_animation_location = Rectangle::new((100, 100), (100, 100));
let custom_animation_location = Rectangle::new((100, 150), (100, 100));
gfx.clear(Color::WHITE);
gfx.present(&window)?;
loop {
while let Some(_) = inputs.next_event().await {}
gfx.clear(Color::WHITE);
simple_animation.draw(&mut gfx, simple_animation_location)?;
custom_animation.draw(&mut gfx, custom_animation_location)?;
gfx.present(&window)?;
}
}
依赖项
~16–26MB
~253K SLoC