UNPKG

@eva/react-eva

Version:

React EVA是一个让开发同学能够在React技术体系下,利用EVA JS的游戏研发能力,开发动画、游戏类场景的框架。它可以让开发同学用熟悉的JSX和Hooks语法编写动画、游戏场景的代码。

37 lines (35 loc) 1.09 kB
import { useMemo } from 'react'; import { resource } from '@eva/eva.js'; var resourceCount = 0; var resourceNameMap = {}; export default 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 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; resource.addResource([{ name: resourceName, type: type, src: src, preload: preload !== null && preload !== void 0 ? preload : true }]); } return resourceName; }, urls); }