swf-lib godot 伪代码案例
extends Node
func _ready():
var swf_resource = SwfResource.new()
if swf_resource.load_swf("user://90.swf"):
swf_resource.print_info()
print("帧数: ", swf_resource.get_num_frames())
print("标签数: ", swf_resource.get_num_tags())
print("帧率: ", swf_resource.get_frame_rate(), " FPS")
var info = swf_resource.get_all_info()
print("SWF 信息: ", info)
for i in range(swf_resource.get_tags_count()):
var tag_info = swf_resource.get_tag_info(i)
print("标签 ", i, ": ", tag_info)
else:
print("加载 SWF 失败!")
测试使用rust
use std::time::Instant;
fn main() {
use std::io::BufReader;
use std::fs::File;
let start = Instant::now();
let file_start = Instant::now();
let file = File::open("/Users/furau/Desktop/rust-study/one/src/90.swf").unwrap();
let reader = BufReader::new(file);
let file_duration = file_start.elapsed();
let decompress_start = Instant::now();
let swf_buf = swf::decompress_swf(reader).unwrap();
let decompress_duration = decompress_start.elapsed();
let parse_start = Instant::now();
let swf = swf::parse_swf(&swf_buf).unwrap();
let parse_duration = parse_start.elapsed();
let total_duration = start.elapsed();
println!("该 SWF 有 {} 帧。", swf.header.num_frames());
println!("该 SWF 有 {} 个标签。", swf.tags.len());
println!();
println!("性能报告:");
println!("文件打开时间: {:?}", file_duration);
println!("解压时间: {:?}", decompress_duration);
println!("解析时间: {:?}", parse_duration);
println!("总耗时: {:?}", total_duration);
println!();
println!("各阶段耗时占比:");
let total_micros = total_duration.as_micros() as f64;
println!("文件打开: {:.1}%", file_duration.as_micros() as f64 / total_micros * 100.0);
println!("解压缩: {:.1}%", decompress_duration.as_micros() as f64 / total_micros * 100.0);
println!("解析: {:.1}%", parse_duration.as_micros() as f64 / total_micros * 100.0);
}