layabox Native 自己下载资源并缓存

2023-05-16

我们在开发中,不管是打的网络版还是本地版,或多或少都有可能加载一些网络上的资源,并且这些资源不想用dcc方式,毕竟现在苹果对热更新管得比较严,那如果不用dcc方式,我们在Native上面的资源用Loader去加载后,并不会缓存到本地,这样会造成网络流量的浪费。

经过我对Laya生成的Native中的js脚本进行分析,以及多次尝试才做出来,而官方很不想帮忙回答这些问题,一问问题就是让你交钱成VIP。

下面是我的代码:

private function downloadFile(url:String,relativePath:String,onComplete:Handler,onError:Handler=null):void{
		
	if(window.conch)
	{
		var folder:String=window.conch.getCachePath()+"/";
		var relativeFolder:String = folder+relativePath.substring(0,relativePath.lastIndexOf("/"));
		if (!window.fs_exists(relativeFolder)) {
			window.fs_mkdir(relativeFolder);
		}

		var cachepath:String = folder+relativePath;
		//判断文件是否存在
		if (window.fs_exists(cachepath)) {
			onComplete && onComplete.runWith("file://"+cachepath.replace(new RegExp('//','g'),"/"));
			return;
		}
	
		var f:* = new window.conch_File(url);
			var fr:* = new window.conch_FileReader();
		fr.setIgnoreError(true);
		fr.onload = function():void {
    		if(fr.result){
				window.fs_writeFileSync(cachepath, fr.result);
				onComplete && onComplete.runWith("file://"+cachepath.replace(new RegExp('//','g'),"/"));
			}
			else
			{
				onError && onError.runWith("no data");
			}
		};
		// fr.onprogress = onprog;
		fr.onerror = function(e):void{ 
			onError && onError.runWith(e);
		};
		fr.readAsArrayBuffer(f);
	}
	else
	{
		onComplete && onComplete.runWith(url);
	}
}

 

使用的代码:

var url:String="https://xxxxxxxx.xxx.xxx/2_3/2_3.png";
downloadFile(url,"2_3/2_3.png",Handler.create(this,function(localPath:String):void{
	Laya.loader.load(localPath,Handler.create(this,function(t:Texture):void{

		url="https://xxxxxxxx.xxx.xxx/2_3/2_3.sk";
		downloadFile(url,"2_3/2_3.sk",Handler.create(this,function(localPath:String):void{
			
			var ske:Skeleton = new Skeleton();
			ske.url=localPath;
			ske.pos(300,300);
			Laya.stage.addChild(ske);

		}));

	}));
}));

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

layabox Native 自己下载资源并缓存 的相关文章

  • 为什么进程的“私有字节”内存计数器永远不会返回到其原始值?

    如果我有一个本机 C 程序并查看它的初始 私有字节 内存计数器 为什么在创建并删除对象后它不会返回到其原始值 例如 如果我有一个有两个按钮的应用程序 32位 Native C MFC 其中一个在循环中分配一个对象的 1 000 000 个实
  • 是否可以让 GC 管理本机对象的生命周期?

    凭借 C 和 C 经验以及一些 Java 知识 我现在正在启动一个 Java JNI C 项目 Android 如果这很重要的话 我有一个本机方法 它创建一些 C 类并返回一个指向它的指针作为 Java 长值 例如句柄 然后从 Java 代
  • 编译为本机代码并包含电池的编程语言

    有哪些编程语言可以编译为本机代码并提供了全面的库 包含网络 文件 IO 正则表达式 数据库 图形 多媒体 Win32 API 绑定 文件压缩等功能的库 我假设每个人都想到过 C 和 C Haskell http haskell org是这里
  • 在 Visual Studio 2015 中使用 v90 (VS2008) 平台工具集

    是否可以 以及如何 使用 VS2015 IDE 使用编译器 链接器 STL 以及 VS2008 附带的所有其他内容来构建本机 C 项目 我想做的事情叫做 C 本机多目标 众所周知 例如VS2012 允许对 C 项目使用 VS2008 v90
  • 多个 AppDomain 和本机代码

    我的 C 应用程序使用的本机代码不是线程安全的 我可以运行该本机代码的多个进程 使用进程间通信来实现并发 我的问题是 我可以使用应用程序域来代替 以便多个托管线程 每个线程位于不同的应用程序域上 调用本机代码并且它们不会相互干扰吗 主要目标
  • Android 中在 jni 中运行的原生 C 代码与在 shell 中运行的区别

    我有一个原生 C Android 应用程序 首先 我将本机 C 代码构建到共享库中 jni 将使用该库 该库使用一些内核可加载模块 ko 一些已经加载 一些必须通过 insmod 命令加载 我还构建了一个使用该库的可执行文件 并且它可以通过
  • 使用 Spark 加载由 --files 参数分发的共享库 (.so)

    我正在尝试在运行 Spark 作业时使用外部本机库 so 文件 首先 我使用提交文件 files争论 加载我正在使用的库System load SparkFiles get libname 创建后SparkContext 确保 确定Spar
  • Android NDK 无法使用两个 gradle 插件调试本机代码

    我使用 NDK 和实验性 gradle 插件 最初我能够调试我的本机代码 然后我看到了这个问题https github com googlesamples android ndk issues 119 https github com go
  • Android 原生代码:将 Surface 分配给特定显示器

    我正在寻找一种将 Surface 本机窗口 对象分配给显示器的方法 以便提交到该本机窗口的缓冲区将渲染到该特定显示器而不是主显示器 我想用本机代码来做到这一点 在Java中 可以通过使用Presentation API来完成 在本机代码中我
  • 我想在启动画面中播放lottie动画React Native

    在 React Native 中 在应用程序启动之前 我们可以看到白屏 我想在单击应用程序图标时立即加载启动屏幕 我想避免白色背景 Using 反应本机启动画面 https github com crazycodeboy react nat
  • 如何使用 MuPDF 在受密码保护的 pdf 上保存注释

    我正在尝试保存受密码保护的 pdf 的注释 我能够绘制注释并保存它 但是 一旦我返回并再次进行活动 我就看不到我的注释 然而奇怪的是 我可以看到注释框 但看不到绘制的路径 它适用于普通 pdf 无密码 pdf 知道如何保存受密码保护的 pd
  • 使用Java Reflection,你能检测一个方法是否是Native的吗?

    使用 Java Reflection 您可以检测所有方法及其返回类型 但是有没有办法检测一个方法是否被声明为native or not 是的 你可以 方法getModifiers 返回一个应用了正确掩码的 int 可以告诉您该方法是否是本机
  • Android 6.0 原生 tgkill 崩溃

    从今天开始我就遇到了本地崩溃 据报道仅适用于Android 6 0 与堆栈跟踪 native pc 0000000000049c34 system lib libc so tgkill 12 native pc 00000000000474
  • 如何在 maven 的 java.library.path 变量中包含本机库

    我正在尝试为我的应用程序使用 JNotify 它有以下要求 只需使用以下命令运行 jar 文件即可测试 JNotify java Djava library path jar jnotify VER jar 目录 然后 JNotify 将监
  • Android 8.0 设备的本机崩溃 tgkill

    我遇到了 Android 8 0 设备的本机崩溃 仅崩溃 发生在运行 Android 8 的设备上 我在 Android Vitals ANRs crashes 中发现了很多本机崩溃 我无法重现这些问题 设备 均搭载 Android 8 0
  • RVM 与 ruby​​ 的本机安装

    我想知道在生产服务器中使用 rvm 是否有任何缺点 我应该选择 RVM 还是本机安装 为什么 不要这样做 错误 也许可以这样做 简单总是有回报的 Rvm是一个开发工具 由于您不会在生产服务器上动态地来回切换 Ruby 版本 因此它没有任何好
  • Android Studio 中的多个本机模块

    我有一个当前在 Visual Studio 中设置的 C 代码库 在 Windows 上运行 其中包含多个具有相互依赖关系的项目 我正在尝试将其转移到 Android Studio 以使其在 Android 上运行 我熟悉 Visual S
  • 我可以在 iOS 上使用 MongoDB 来替代 CoreData 吗?

    我刚刚开始阅读 MongoDB 和 CouchDB 等 NoSQL 技术 我有兴趣知道是否可以使用 MongoDB 或任何 NoSQL 技术来替代 Core Data 应用程序 核心数据应用程序可能需要很长时间来学习和实现 特别是如果您的应
  • Android 8 本机库崩溃

    自从 Android 8 Oreo 推出以来 我们的应用程序一直在不同的地方崩溃 所有 Play 商店崩溃报告都显示本机崩溃 最常出现的一个似乎是在本机库中 最常崩溃的设备是 Google Pixel Pixel XL 也出现过一些崩溃 我
  • /system/lib/libart.so 中的本机崩溃

    我在 Play 商店中有一个应用程序 它有一个IntentService当应用程序启动时 它会做一些工作 并且会导致 Android 5 0 上的本机崩溃 该服务仅扫描资产文件夹以进行应用程序更新 具体来说 这次崩溃似乎发生在升级到 Lol

随机推荐

  • Android 任务栈简介

    Android 任务栈简介 一个Android应用程序功能通常会被拆分成多喝Activity xff0c 而各个Activity之间通过Intent进行连接 xff0c 而Android系统 xff0c 通过栈结构来保存整个App的Acti
  • Error: Invalid character in header content [“Authorization“]

    GET https xxxxxx com api getToken Body 34 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJleHAiOjE2NzkzMTM5MDB9 VgZnHxBUqR3I PZD
  • 标准C++库有哪些

    C 43 43 标准库的内容基本可以分以下为10类 xff1a C1 标准库中与语言支持功能相关的头文件 C2 支持流输入 输出的头文件 C3 与诊断功能相关的头文件 C4 定义工具函数的头文件 C5 支持字符串处理的头文件 C6 定义容器
  • 示波器解析串口数据

    文章目录 前言一 示波器准备二 硬件介绍三 软件四 串口TTL数据协议1 波特率2 数据起始和停止信号3 数据有效位4 数据校验位 五 示波器探头连接五 串口数据波形捕获 方式1 xff1a 示波器自带的decode进行解码方式2 xff1
  • UART波形分析

    1 逻辑分析仪解码配置 波特率 xff1a 9600 2 逻辑分析仪结果 3 波特率计算 1除以9600 xff0c 结果如下 xff08 e 4表示10的负4次方 xff09 表示 0 00010416秒 61 104 16 微秒 找到发
  • snprintf()函数使用方法

    众所周知 sprintf不能检查目标字符串的长度 xff0c 可能造成众多安全问题 所以都会推荐使用snprintf 自从snprintf代替了sprintf xff0c 相信大家对snprintf的使用都不会少 xff0c 函数定义如下
  • vlc通过udp读取h264码流

    vlc通过udp读取h264码流 在使用gstreamer过程中 xff0c 遇到需要在服务端推送码流 xff0c 客户端接受的情况 xff0c 而有些主机并未安装gstreamer xff0c 但是可以采用vlc读取视频 xff0c 方法
  • ubuntu20.04回退系统内核

    ubuntu20 04回退系统内核 有时候开机之后突然发现nvidia smi检查不到驱动了 分辨率不对 xff0c 第二个屏幕检测不到等等 xff0c 一般来说是因为内核自动更新导致的 xff0c 这里介绍一下内核回退的方法 第一步 查看
  • Unity 重置项目资源的guid

    有时需要将多个项目的资源合并到一个项目中 xff0c 但有可能有些资源是共用的 xff0c 它的guid是一样的 xff0c 这样合并到一个项目时 xff0c 可能会超成冲突 如果要让每个资源的guid都不相同 xff0c 就需要重新生成g
  • zotero+logseq联合阅读文献具体设置

    title zotero 43 logseq联合阅读文献具体设置 date 2022 05 16 16 10 41 tags literature research logseq zotero zotero 43 logseq联合阅读文献具
  • hexo博客同时发布到github和gitee, 并使用gitee page action更新gitee page

    hexo博客同时发布到github和gitee xff0c 并使用gitee page action更新gitee page 发布博客到github page和gitee page 首先在github和gitee中各自建立一个公开仓库 xf
  • 在git bash中使用oh my zsh

    在git bash中使用oh my zsh 安装zsh 首先从官网下载git bash 进入MSYS2 Packages点击File下载 zst压缩包 xff0c 如图所示 xff1a 直接解压至Git根目录下 可通过git bash的快捷
  • 如何编写CMakeLists.txt,并且使用pkg-config

    这里记录一下如何编写CMakeLists txt 本篇blog记录如何在CMakeLists txt中使用pkg config 首先确定cmake版本 cmake minimum required VERSION 3 16 项目名称 pro
  • 解决WSL上不了网以及不能通过wsl网络ping通主机

    解决WSL上不了网以及不能通过wsl网络ping通主机 WSL上不了网 在更换电脑无线网络之后 xff0c 发现wsl上不了网 xff0c ssh显示no route xff0c ping baidu com ping不通 xff0c 但是
  • WIndows下cmd报错退出进程,代码为1

    WIndows下cmd报错退出进程 xff0c 代码为1 不知道什么原因出现了这种情况 参考微软官方回答 xff08 https answers microsoft com zh hans windows forum all cmd E6
  • docker使用load加载tar镜像时报错no such file or directory

    docker使用load加载tar镜像时报错no such file or directory 解决docker在使用load加载tar镜像时报错open var lib docker tmp docker import xxxxxxxxx
  • sudo启动的程序找不到动态库文件

    sudo启动的程序找不到动态库文件 在 bashrc中添加的LD LIBRARY PATH xff0c 并sudo ldconfig后 xff0c sudo启动的程序还是找不到依赖库 原因分析 sudo启动的程序不会用到bashrc中的配置
  • Pycharm显示cannot find declaration to go to,设置子目录为根目录

    Pycharm显示cannot find declartion to go to xff0c 设置子目录为根目录 使用Pycharm用ctrl跳转函数时显示cannot find declaration to go to 原因可能有很多 x
  • pycharm 2021.2.2 版本之前试用期过了怎么办

    pycharm 2021 2 2 版本之前试用期过了怎么办 虽然 jetbrains 的产品是商业收费 xff0c 而且价格不菲 xff0c 但官方还是为免费使用留下的空间 xff0c 实在良心 收费版可以免费试用30天 xff0c 问题是
  • layabox Native 自己下载资源并缓存

    我们在开发中 xff0c 不管是打的网络版还是本地版 xff0c 或多或少都有可能加载一些网络上的资源 xff0c 并且这些资源不想用dcc方式 xff0c 毕竟现在苹果对热更新管得比较严 xff0c 那如果不用dcc方式 xff0c 我们