Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从画布前面的变量中写入文本?_Javascript_Jquery_Html_Canvas - Fatal编程技术网

Javascript 如何从画布前面的变量中写入文本?

Javascript 如何从画布前面的变量中写入文本?,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,我正在开发一款卡片制作应用程序。它背后的想法是有一个CSV文件,其中包含每张卡的数据,一个包含图像的文件夹,并在上传CSV文件后为我拥有的每个角色创建一张卡。到目前为止还不错,但我在画布前写文章时有点结巴 画布是通过重叠许多不同的图像创建的,但是文本出现在背景上,最终被其他图像完全覆盖。我要文字在前面 我在加载包含数据的CSV文件时触发所有操作,实际上我使用了一个“context.fillText”,但没有按照我希望的方式工作 如何将变量中的文本放在画布前面最后3个“context.fillTe

我正在开发一款卡片制作应用程序。它背后的想法是有一个CSV文件,其中包含每张卡的数据,一个包含图像的文件夹,并在上传CSV文件后为我拥有的每个角色创建一张卡。到目前为止还不错,但我在画布前写文章时有点结巴

画布是通过重叠许多不同的图像创建的,但是文本出现在背景上,最终被其他图像完全覆盖。我要文字在前面

我在加载包含数据的CSV文件时触发所有操作,实际上我使用了一个“context.fillText”,但没有按照我希望的方式工作

如何将变量中的文本放在画布前面最后3个“context.fillText”中? 最后一个范围是有一个可以保存为图像的画布

这是我的代码

$(文档).ready(函数(){
函数loadImages(源、回调){
var图像={};
var loadedImages=0;
var numImages=0;
//获取源的数量
用于(源中的var src){
numImages++;
}
用于(源中的var src){
图像[src]=新图像();
图像[src].onload=function(){
如果(++LoadeImage>=numImages){
回调(图像);
}
};
图像[src].src=源[src];
}
}
var canvas=document.getElementById('myCanvas');
var context=canvas.getContext('2d');
document.getElementById('txtFileUpload')。addEventListener('change',upload,false);
功能上传(evt){
var file=evt.target.files[0];
var reader=new FileReader();
reader.readAsText(文件);
reader.onload=函数(事件){
var csvData=event.target.result;
帕帕·帕斯(csvData{
完成:功能(结果){
console.log(results.data);
var imgStelle;
var imgClan;
内生变种;
var numeroCarte=(results.data.length);

对于(var i=0;i我认为您可以使用
.append()
并在
.contenitoreCarte
中创建文本,甚至可以使用画布

用法太简单了, 文件如下:


如果您给我一个CSV示例,我可以通过完成代码提交更好的答案

我认为您的问题在于您正在“所有图像已加载”回调中绘制图像,但文本是在运行此回调之前绘制的

请尝试以下方法:

loadImages(sources, function(images) {
    context.drawImage(images.image1, 0, 0,  2220 , 3240);
    // context.drawImage image2, 3, ...9,
    context.drawImage(images.image10, 170, 2950,  130 ,170);

    // Draw text here
    context.font = "40pt Calibri";
    context.fillText(nome, 20, 20);
    context.fillText(potere, 20, 20);
    context.fillText(bonus, 20, 20);
});
并在此处将
var
替换为
const

const nome = results.data[i][1]; 
const potere = results.data[i][6];
const bonus = results.data[i][7];

您能否提供一个CSV示例,以便我们可以试用您的代码?或者可以修改代码以使用一些预定义的值运行。CSV结构很简单,只是一大堆具有相同模式但不同值的行:ClanName、CardName、1,1、CardPower、cardbowns、fullname。您如何将文本放入新的html
中,并将其放置在使用CSS绘制画布?@Papooch,但您将失去“另存为图像”功能。@OP我得到了
“未捕获引用错误:未定义Papa”
,您能正确地包括这一点吗?@Stratubas Papa是一个名为papaparse:)的外部库的js,这样我将无法将其另存为图像。@GianlucaFontana与中的工作方式不同“不画任何东西”或者仍然画在图像后面?@GianlucaFontana如果它画错了文本,我也不会感到惊讶…@GianlucaFontana尝试用
var
替换
const
,我在回答中补充道。先生,你破案了。非常感谢,真的!:)