当 HTML5 画布准备好时调用函数

2023-12-19

我将多个 PNG 图像加载到画布上,因此生成画布需要一些时间。

我想在画布加载时显示加载图标。如何检查画布是否正在加载或准备就绪?

HTML:

<canvas id="myCanvas" width="1300" height="800"></canvas>

JavaScript:

function buildCanvas(settings){


          var canvas = document.getElementById('myCanvas');
          var context = canvas.getContext('2d');
          var ctx = canvas.getContext("2d");

          var background = new Image();
          background.onload = function() {
            context.drawImage(background, 0, 0, 1300, 836);
          };
          background.src = 'data/skin-army.png'; 

}

当创建画布或开始获取图像时,做一些事情来指示用户图像正在加载,如果您还想使用画布通知用户图像已加载,请将该逻辑放入img.onload.

找了一张足够大的图片来演示,应该能看到文字的变化。

function buildCanvas(settings){

          var canvas = document.getElementById('myCanvas');
          var context = canvas.getContext('2d');
          var ctx = canvas.getContext("2d");
          var images = [
            'http://www.fmglobal.com/assets/images/library/download/hydraulicslab_1.jpg',
            'http://www.fmglobal.com/assets/images/library/download/Fireslope.jpg',
            'http://www.fmglobal.com/assets/images/library/download/Firefighter_firetest.jpg',
            'http://www.fmglobal.com/assets/images/library/download/rowsprinklers.jpg'
          ];
          var imagesLoading = images.length;
          
          // Image loader.
          var loadImage = function(i) {
             var img = new Image();
             img.onload = function() {
               images[i] = img;
               --imagesLoading;
               // Call the complete callback when all images loaded.
               if (imagesLoading === 0) {
                 workDone();
               }
             };
             img.src = images[i];
          };
          
          // Call upon all images loaded.
          var workDone = function() {
            // Clear canvas
            canvas.width = canvas.width;
            
             // Anything you want to notify the user image is Ready.
            ctx.fillText("Ready", 100, 130);
            
            
            var i, iLen = images.length;
            for (i = 0; i < iLen; ++i) {
              context.drawImage(images[i], 100*i, 0, 100*(i+1), 100);
            }
          };
           
          // Start to load all images.
          var i;
          for(i = 0; i < imagesLoading; ++i) {
            loadImage(i);
          }
  
          // Show image loading. with animation or something else...
          ctx.fillText("loading", 100,  130);
}

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

当 HTML5 画布准备好时调用函数 的相关文章

  • 在已标记的输入元素上使用“aria-labelledby”的目的是什么?

    许多 ARIA 演示网站使用以下代码
  • 公开闭包内的方法

    当我们在闭包内创建一个方法时 该方法将成为该闭包的私有方法 并且在我们以某种方式公开它之前无法访问它 怎么可能暴露呢 您可以返回对它的引用 var a function var b function I m private alert go
  • django 模板上的 vscode html 自动套用格式

    我喜欢 VSCode 的保存自动格式功能 直到它弄乱了我的模板代码 它错误地将我的 django 模板语法格式化为一行代码 有时非常长的一行 所以不用这段代码 for row in ABCDEFGH tr for col in 123456
  • 等待异步 grunt 任务完成

    我收到了 grunt 设置 其中一个新任务应该执行 grunt task run 已经存在的任务 要执行的任务是异步的 新任务应该等待异步任务完成 执行此操作的首选方法是什么 grunt 已经涵盖了这一点 你应该将你的任务声明为异步任务 并
  • 使用 eval 时不会受到 XSS 威胁

    我正在制作 不是现在 但我仍然对这个感到好奇 一款使用 HTML5 和 JS 的游戏 我想要的是人们可以插入自定义脚本 但要安全 function executeCustomJS code eval code bad 当然这段代码非常糟糕
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • 如何在数据表角度中基于 JSON 动态填充表值?

    我在用着Angular 数据表 https l lin github io angular datatables 我需要能够根据返回的数据动态创建表 换句话说 我不想指定列标题 Example json数据 id 2 city Baltim
  • 当 Chrome 中嵌套滚动中的数据更改时防止页面滚动

    我在页面中有一个固定大小的元素 带有 溢出 滚动 其内容经常更改 我预计该元素内部发生的更改会影响该元素的滚动 但不会影响页面滚动 但是当这个元素位于页面顶部时 页面本身开始滚动 我怎样才能防止这种情况发生 要重现此行为 我在 chrome
  • CSS以两种颜色显示一个字符[重复]

    这个问题在这里已经有答案了 css中是否可以用两种颜色制作单个字符 我的意思是例如字符 B 上半部分为红色 下半部分为蓝色 h1 font size 72px background webkit linear gradient red 49
  • 即使我的情况按预期发生变化,Angular ngClass 也不会更新我的课程

    我正在创建的模板中有类似的内容 div class nng 3 div 价值app layout isNavbarFixed等用零或一初始化 并且页面第一次加载时 适当的类被插入到我的div 不过 此后通
  • 浮动CSS属性导致父div不继承高度?

    我在 div 中有一个元素设置为float right但是 它会导致最外面的 div 不环绕 这是jsfiddle http jsfiddle net W792X 5 for it 我试图让提交按钮在 div 内浮动 但设置该属性似乎会导致
  • 如何捕获文本区域上的 Enter 按键而不是 Shift+Enter? [复制]

    这个问题在这里已经有答案了 I m doing it for texarea A function should be called when the user press Enter but nothing should be done
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att
  • 拉斐尔路径交叉点不起作用

    我对拉斐尔和 pathIntersection method JSFiddle 示例 http jsfiddle net t6gWt 2 您可以看到有两条线都与曲线相交 但当我使用 pathIntersection method 有一个未解
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 如何在CSS中制作多边形div

    我可以在 CSS 中制作一个普通的方形 div 和一个三角形 div 但我不知道如何用单个 div 制作这样的形状 谁能帮我吗 我也希望它扩展到它的父级的整个宽度 但是border属性不支持百分比 例如border left 160px s
  • 快速检测 wifi 是否启用

    在我的应用程序中 我有一些 NSURLConnection sendAsynchronousRequest 但因此 如果用户禁用了 wifi 应用程序就会崩溃 有没有办法检测 wifi 是否被禁用 这样我就可以做类似的事情 if wifi
  • jQuery 砌体与 Wordpress 和 imagesLoaded

    我正在我正在开发的 WordPress 主题上使用 jquery masonry 在努力让它工作一段时间后 我发现 似乎对我来说工作正常 但是在 Chrome 和 Safari 中检查站点会将包含元素的底部推入以下元素 现在我在某处读到 这
  • Grails、SpringSecurity - 如果未记录则禁用重定向

    我如何配置 grails 使其在尝试访问安全资源时不将人员 用户重定向到登录页面 我只想发送 401 状态错误并重定向到主页 你要做的是配置authenticationEntryPoint 这通常可以在spring resources gr
  • 如何在Access-VBA函数中SQL连接表,选择最大值?

    我目前有以下 Access VBA 函数 其操作方式如上一个问题 https stackoverflow com questions 38898257 how to maintain uniqueness during sql join w
  • 如果存在更新否则插入

    我想知道下一段代码是否正确 SqlCommand cmd new SqlCommand IF NOT EXISTS SELECT count from Raspunsuri where id intrebare 2 Insert INTO
  • 插入 PostgreSQL

    我在 SQL 方面遇到了一点问题 我正在尝试将 2 个值插入到我的表中 这是我的查询 INSERT INTO tableinfo table date VALUES Sell 24 August 但这不起作用 我有类似的东西 SQL err
  • 通过“C#”清除临时 Internet 文件

    我在 Windows 应用程序中使用 webbrowser 控件 我正在查看 webbrowser 控件内的 url 内容 这里的 url 内容值存储在用户计算机的临时 Internet 文件中 当我单击表单中的关闭按钮时 我正在以编程方式
  • 除了 Windows 设备门户之外,还有其他方式访问 Hololens LocalAppData 吗?

    我一直遇到这个问题 当我尝试通过 Windows 设备门户将本地应用程序文件从 Hololens 保存到我的计算机时 门户需要很长时间才能下载它们并最终超时 这很令人沮丧 因为我在连接到门户时没有问题 而且我尝试下载的文件非常小 有谁知道我
  • 如何查看Python文件的汇编代码? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 出于好奇 我想查看与 py 文件代码相对应的汇编指令 您可以提出任何值得信赖的解决方案吗 The dis module https
  • 如何更新已安装的 Windows 服务?

    我用 C 编写了一个 Windows 服务 我已经将它安装在我的机器上 并且运行得很好 当您安装服务时 exe被复制到某个地方 还是它指向我的bin文件夹 这是为了让我知道 当我不时更新我的 代码时 我是否必须卸载并重新安装我的服务才能更新
  • 为什么在searchBar和tableview之间添加空白?

    我有一个表格视图控制器 我添加了搜索栏 但是当我点击 searchBar 时 searchBar 和 TableView 之间有一个空格 为什么 以及如何修复 在下面我添加了屏幕截图和代码 tableViewController 列表 感谢
  • Java 中的 JAR 级(汇编级)类范围

    在 C 中 如果我希望某个类对该程序集 DLL 中的任何类都可见 我只需将其范围设置为internal 这是默认值 我怎样才能在Java中做到这一点 在Java中 我注意到默认 内部范围是封装级别 not JAR 级别 这对我来说是一个问题
  • Python 中的图像注视点

    我希望能够在 Python 中将焦点放在图像的中心 我的输入图像可以表示为 2D Numpy 数组 我想要获得中心高分辨率但两侧模糊的输出图像 我发现了一个名为的 OpenCV 函数logplar interp为此目的 但它似乎不存在于 O
  • IOS中如何处理用户认证持久化?

    我正在尝试为我的 iPhone 应用程序和服务器构建基础 我的用户将从 iPhone 应用程序注册并登录 在正常的网站登录中 http 服务器会提供 cookie 以允许用户后续的请求保持身份验证 我应该如何在 iPhone 上处理这个问题
  • 关闭 Excel.Workbook 时出现 COMException(0x80010108 - RPC_E_DISCONNECTED)

    当我运行以下代码时 出现以下异常 NOTE ExcelApp is a Private main form variable Dim ReportBooks As Excel Workbooks ExcelApp Workbooks Dim
  • 如何在异步模式下使用 XMLHttpRequest 设置多个标头数据?

    我的 api 调用要求我在标头中传递 api 密钥 但我从 api 服务返回错误 error 2424452 message Invalid Api Key 我知道我的 api 密钥是有效的 因为我可以在 Python 中进行相同的 api
  • 如何替换 Gradle 构建产品文件中的令牌?

    我为 Gradle 设置了一个普通的构建脚本 我想做的一件事是指定我的构建版本 这是我设置的用于替换主 Java 源文件中的版本标记的代码 import org apache tools ant filters ReplaceTokens
  • 什么是位掩码?

    我对 C 编程相当陌生 并且遇到了位掩码 位掩码的一般概念和作用是什么 非常感谢例子 掩码定义要保留哪些位以及要清除哪些位 屏蔽是将屏蔽应用于值的行为 这是通过执行以下操作来完成的 按位与运算以提取值中的位子集 按位或运算以设置值中的位子集
  • 当 HTML5 画布准备好时调用函数

    我将多个 PNG 图像加载到画布上 因此生成画布需要一些时间 我想在画布加载时显示加载图标 如何检查画布是否正在加载或准备就绪 HTML