`
祈祷幸福
  • 浏览: 37209 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

发现一个会导致HTML5 canvas的save和restore失效的情况

阅读更多
今天写代码出了一点bug,结果是canvas的save和restore失效。

      ctx.save();
      ctx.translate(pos_.x(), pos_.y());
      ctx.rotate(angle_);
      ctx.drawImage(image_, -width_ / 2, -height_ / 2, width_, height_);
      ctx.restore();


检查了半天也没看出save和restore哪里有问题。最后发现问题根本不在这里。

原因是image_对象出错,不能被正确读取。修改了bug之后,然后我又故意设置drawImage的第一个参数为null,果然问题又重新出现了。

三大浏览器反应都是这样的。有兴趣的可以去试试。

很奇怪这个为什么会导致canvas保存不了状态。

记录下这个奇怪的问题。
分享到:
评论
1 楼 06wj 2012-01-31  
drawImage时就已经报错了,restore语句就不会执行了。。。

相关推荐

    Android canvas.save()和canvas.restore()的理解

    当你调用`save()`时,`Canvas`会将当前的状态存储到一个栈中,以便稍后恢复。 举个例子,假设你正在绘制一个复杂的图形,其中包含多个旋转、缩放和平移操作。如果不使用`save()`和`restore()`,这些变换可能会相互...

    android中canvas的save和restore用法

    当我们调用`save()`时,`Canvas`会将当前的所有绘图状态记录下来,生成一个状态快照。这个状态快照可以用来恢复到之前的状态,避免因为后续的绘图操作对已经绘制的内容造成影响。 `restore()`方法与`save()`相对应...

    Android Canvas save restore演示

    当我们调用`save()`时,Canvas会将当前状态保存到一个栈中,这样我们就可以在之后恢复到这个状态。 `Canvas.restore()`方法则用于恢复之前通过`save()`保存的状态。这通常用于确保在执行一系列绘制操作后,Canvas能...

    android 中canvas的save和resotre用法

    - 复杂的绘制流程:在一个复杂的绘制流程中,`save()`和`restore()`可以用来分割不同的绘制阶段,每个阶段可以有自己的独立设置,而不会互相干扰。 4. 示例代码: 下面是一个简单的例子,展示了如何使用`save()`和`...

    html5 canvas.rar

    总结起来,"html5 canvas.rar"提供了一个简单的HTML5 Canvas示例,展示了如何在网页上使用Canvas进行图形绘制和图像处理。通过学习和分析这个例子,开发者可以深入理解Canvas API,提升在Web开发中的图形处理能力。...

    HTML5 Canvas核心技术源码技术代码

    HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas...

    html5 canvas绘制3D地球旋转动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的视觉效果。在这个“html5 canvas绘制3D地球旋转动画特效”中,我们将深入探讨如何利用HTML5 Canvas API来创建一个逼真...

    HTML5 canvas仿屏保动态管道

    总之,"HTML5 canvas仿屏保动态管道"是一个展示canvas强大图形处理能力的示例,通过JavaScript编程实现了动态视觉效果,为网页带来了互动性和趣味性。通过学习和理解这个项目,开发者可以进一步提升在canvas上的图形...

    html5 canvas飘洒的星星特效

    html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的星星特效html5 canvas飘洒的...

    HTML 5 Canvas基础教程 源码+PDF

    《HTML 5 Canvas基础教程》从HTML5和JavaScript(以及jQuery)的基础知识讲起,全面介绍了HTML5Canvas的各种特性,包括渲染上下文、坐标系统、绘制图形、保存和恢复画布状态,以及变形、合成、处理图像和视频等,让...

    html5canvas播放视频

    HTML5 Canvas 是一个强大的网页图形绘制工具,允许开发者在网页上动态绘制图像,而无需依赖任何插件。在这个场景中,我们关注的是如何利用Canvas来播放视频。这涉及到HTML5的Media API和Canvas API的结合使用,使得...

    html5 canvas 图片压缩

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图像处理,包括绘制、修改和操作图像。在HTML5 Canvas中,我们可以通过JavaScript API实现图片的压缩功能,这对于优化网页性能,尤其是处理...

    html5 canvas 绘制的视频播放控制条

    在这个项目中,我们利用HTML5 Canvas来实现一个自定义的视频播放控制条,以此替换HTML视频元素默认的控制界面,提升用户界面的美观度和交互性。 1. **HTML5 Video Element** HTML5的`<video>`标签是用来嵌入视频...

    HTML5 CanvasAPI

    Canvas API 的历史可以追溯到苹果公司在MacOSX WebKit中提出的一个概念,最初用于创建控制板部件。在Canvas元素出现之前,开发人员若要在浏览器中进行绘图,只能依赖于Adobe的Flash插件、SVG和IE支持的VML等技术。...

    HTML5 Canvas核心技术代码

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的交互式用户体验。Canvas API提供了大量的方法和属性,使得JavaScript可以直接控制像素级别的图像操作。这个压缩包...

    html5 canvas绘制随机游动线条动画特效

    这个“html5 canvas绘制随机游动线条动画特效”示例,是HTML5 Canvas功能的一个生动应用,展示了如何结合JavaScript和Canvas API创造互动的、视觉吸引力强的网页元素。通过学习和理解这些技术,开发者能够创建出更多...

    html5<canvas游戏连连看>

    5. **状态管理**:Canvas的绘图状态可以通过`save()`和`restore()`方法进行保存和恢复。在游戏逻辑中,这可以用来切换不同状态的绘图,比如正常状态和选中状态。 6. **动画制作**:通过定时器(如`...

    html5 canvas 游戏

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的交互式2D内容。这个“html5 canvas 游戏”是一个基于HTML5 Canvas技术开发的小游戏,主题是“兔子吃萝卜”,展示了...

    一个基于 html5 canvas 的流程图demo..zip

    HTML5 Canvas是一个强大的Web图形API,它允许开发者在网页上直接绘制图形,创建动态和交互式的视觉效果。这个"一个基于html5 canvas的流程图demo.zip"文件很可能包含了一个使用HTML5 Canvas技术实现的流程图示例项目...

    Html5 Canvas API

    HTML5 Canvas API 是一个强大的网页图形绘制工具,它允许开发者通过JavaScript在网页上进行像素级别的图形操作。这个API为Web开发者提供了丰富的画布绘图功能,使得动态图像、动画、游戏甚至复杂的图表都能在浏览器...

Global site tag (gtag.js) - Google Analytics