如何在HTML画布中静态声明字母而不使用字符码
How to statically declare letters without using charcode in HTML Canvas
我有这个连接4个点的样本。
我想要的是字母[S,T,A,R]而不是连续字母。一旦用户点击绘制,它将以用户想要的新坐标绘制[S,T,A,R]的另一个点。
示例代码片段:
for(var i=0;i<connectors.length;i++){
var c=connectors[i];
var s=anchors[c.start];
var e=anchors[c.end];
ctx.beginPath();
ctx.moveTo(s.x,s.y);
ctx.lineTo(e.x,e.y);
ctx.stroke();
}
//draw lines
if (anchors.length>0 && anchors.length%4>0){
ctx.strokeStyle='gray';
var al = anchors.length-1;
var almod4 = al%4;
if (almod4==1 || almod4==2){
//draw extra line
ctx.beginPath();
ctx.moveTo(anchors[al-1].x,anchors[al-1].y);
ctx.lineTo(mouseX,mouseY);
ctx.stroke();
}
ctx.beginPath();
ctx.moveTo(anchors[al].x,anchors[al].y);
ctx.lineTo(mouseX,mouseY);
ctx.stroke();
}
只有它有字母[S,T,A,R]
,你可以有一个字母数组来保存这些字母,并让addAnchor()
从该数组中增量地使用项目(并做mod Array.length
再次绕到开始):
var letters = ["S", "T", "A", "R"];
function addAnchor(x,y){
anchors.push({
label:letters[nextLetter],
x:x,
y:y,
});
nextLetter = (nextLetter+1) % letters.length;
}
<<p> 小提琴例子/strong> 注意,当画布被清除时,您可能需要重置nextLetter
的值。
对于只有一个集合的情况,您可以使用相同的数组,但要删除第一个元素,并且只在数组不为空时添加节点:
function addAnchor(x,y){
if(letters.length)
{
anchors.push({
label:letters[0],
x:x,
y:y,
});
letters.shift();
}
}
然后你可以在点击绘制按钮时添加这些字母(你可以像这样设置数组或者在数组上附加四个字母,这取决于你想做什么):
$("#draw").click(function(){
letters = ["S", "T", "A", "R"];
});
<<p> 小提琴例子/strong> 相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- 直接在函数声明上使用function.prototype.bind
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 获取HTML属性中CSS声明的值
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 对API数据使用声明性绑定
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 允许在文本框中使用某些字符
- 根据页面的位置突出显示文本中的字符
- 元素的内容必须由格式正确的字符数据或标记组成
- 以纯文本加载的脚本-未声明纯文本文档的字符编码
- 限制用户使用按键事件 injQuery 复制和粘贴声明为数字文本框的文本框中的字符
- 如何在 javascript 中替换两个声明字符之间的字符串
- 字符||在JavaScript中的变量声明中的作用是什么
- 找不到HTML文档的字符编码声明
- 如何在HTML画布中静态声明字母而不使用字符码