画布绘制按分区背景精灵绘制的图像
Canvas drawImage by division background sprites
我正在尝试使用精灵(停止工作良好)在画布元素(运行良好)中设置一些图像对象:
注意:代码已简化!
.HTML
<canvas id="canvasMap" width="600" height="600"></canvas>
<div id="playerLeft"></div>
.JS
var canvas = document.getElementById('canvasMap');
var context = canvas.getContext('2d');
var img = new Image();
img.src = $($(document).find('#playerLeft').get(0)).css('background').replace(/^url'(["']?/, '').replace(/["']?')$/, '');
img.onload = function () {
context.drawImage(img, 0, 0);
};
.CSS
#playerLeft {
left: 0px;
height:58px;
display:block;
width: 80px;
background: url('/assets/sprites/angle.png') -0px -70px;
}
结果(开发者控制台)
Resource interpreted as Image but transferred with MIME type text/html: "http://example.com/rgba(0,%200,%200,%200)%20url(http://example.com/assets/spr…png)%20repeat%20scroll%200px%20-70px%20/%20auto%20padding-box%20border-box"
问题
如何使声明的图像对象通过 css 定义的 id 接收背景精灵?我想在没有第三方库的情况下解决它。
以下是获取div 背景图像的 dataURL 的一种方法:
// get the dataURL of your div's background
var bg = $('#sprite1').css('background-image');
bg = bg.replace('url(','').replace(')','').replace('"','').replace('"','');
示例代码和演示:
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
// get the dataURL of your div's background
var bg = $('#sprite1').css('background-image');
bg = bg.replace('url(','').replace(')','').replace('"','').replace('"','');
// build an image from the dataURL
var img=new Image();
//img.crossOrigin='anonymous';
img.onload=function(){
// draw the image onto the canvas
ctx.drawImage(img,20,20);
}
img.src=bg;
body{ background-color: ivory; padding:10px; }
#canvas{border:1px solid red;}
#sprite1{
border:1px solid blue;
width:75px;
height:75px;
background-image:url('https://dl.dropboxusercontent.com/u/139992952/multple/sun.png');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id=sprite1>Sprite1</div>
<canvas id="canvas" width=100 height=100></canvas>
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 可以在这里为背景图像设置滤镜吗
- 有没有一个javascript图形绘制库可以进行气球树布局
- 如何使用jquery更改html中的背景颜色
- 使用 js 将背景图像设置为 HTML
- 使用带括号的图像URL作为jQuery的背景
- 绘制DOM元素:鼠标事件会被背景元素混淆
- 在画布背景图像上插入绘制的形状
- 画布绘制按分区背景精灵绘制的图像
- 如何重新绘制背景,使其看起来像我的“播放器”在html5-canvas中移动
- 使用图论/网络库在节点的背景上绘制图标
- 如何在 HTML5 画布上绘制背景图像
- 如何更精确地在画布上绘制,以避免背景从画布下泄漏
- 修剪透明背景的图像绘制在画布与PHP或javascript
- 在画布上绘制生成的背景时的一些建议
- 当JS改变页面高度时,Body背景CSS梯度不会重新绘制
- 为高图中的工具提示绘制自定义背景形状
- globalCompositeOperation绘制白色背景
- 如何有效地更新数百个元素上动态绘制的背景