@eva/react-eva
Version:
React EVA是一个让开发同学能够在React技术体系下,利用EVA JS的游戏研发能力,开发动画、游戏类场景的框架。它可以让开发同学用熟悉的JSX和Hooks语法编写动画、游戏场景的代码。
46 lines (38 loc) • 1.17 kB
JavaScript
;
exports.__esModule = true;
exports["default"] = useResource;
var _react = require("react");
var _eva = require("@eva/eva.js");
var resourceCount = 0;
var resourceNameMap = {};
function useResource(_ref) {
var name = _ref.name,
type = _ref.type,
src = _ref.src,
preload = _ref.preload;
var urls = Object.keys(src).sort().map(function (key) {
if (typeof src[key] === 'string') {
return src[key];
} else {
return src[key].url || src[key].src;
}
});
return (0, _react.useMemo)(function () {
var mapKey = urls.join('|');
var resourceCacheName = resourceNameMap[mapKey];
var resourceName;
if (resourceCacheName !== undefined && (name === undefined || name === resourceCacheName)) {
resourceName = resourceCacheName;
} else {
resourceName = name || "resource_" + type + "_" + ++resourceCount;
resourceNameMap[mapKey] = resourceName;
_eva.resource.addResource([{
name: resourceName,
type: type,
src: src,
preload: preload !== null && preload !== void 0 ? preload : true
}]);
}
return resourceName;
}, urls);
}