yoone-snow/js/shapes/utils.js

45 lines
1.6 KiB
JavaScript

(function(){
// 全局图像缓存对象 存放已加载的图像资源
window.YooneSnowImageCache = window.YooneSnowImageCache || {};
// 获取或加载图像 根据 URL 返回图像对象和加载状态
window.YooneSnowGetOrLoadImage = function(imageUrl){
// 条件判断 如果未提供 URL 则返回空
if (!imageUrl || typeof imageUrl !== 'string'){
return { img: null, ready: false };
}
const existing = window.YooneSnowImageCache[imageUrl];
// 条件判断 如果已存在缓存则直接返回
if (existing && existing.ready){
return existing;
}
if (existing && !existing.ready){
// 条件判断 如果正在加载则返回当前状态
return existing;
}
// 创建新的图像对象 并开始加载
const img = new Image();
const record = { img: img, ready: false };
window.YooneSnowImageCache[imageUrl] = record;
img.onload = function(){
// 加载成功 标记为可用
record.ready = true;
};
img.onerror = function(){
// 加载失败 从缓存移除避免重复错误
delete window.YooneSnowImageCache[imageUrl];
};
img.src = imageUrl;
return record;
};
// 居中绘制图像 根据目标中心点和宽高进行缩放绘制
window.YooneSnowDrawCenteredImage = function(context, img, centerX, centerY, width, height){
// 条件判断 如果图像不存在则不绘制
if (!img) { return; }
const drawX = centerX - width / 2;
const drawY = centerY - height / 2;
context.drawImage(img, drawX, drawY, width, height);
};
})();