JavaScript+SVG로 도트 매트릭스 생성
인터랙티브 SVG를 만들고 싶습니다.
JavaScirpt라고 하면 홈페이지에 날짜 표시하는 시대부터 기성 서리.
지금 프런트에서는 무쌍 상태의 언어로 8bit인 느낌의 것을 만들어 보고 싶다고.
전 시대에 혼자서 시도하고 싶습니다.
라이브러리를 사용하는 것이 정답이라고 생각합니다.
자바스크립트 + SVG 벽
선인의 기사를 보면 어쨌든 제한 사항이 많아 길은 어렵다.
인라인 SVG라면 여러가지 조작할 수 있다고 하는 기술을 보는 것도, 그 소스를 붙여 넣는 것은 싫다.
심플한 SVG로 8bit인 느낌을 할 수 없는 것인가.
Let's Generate!
더 이상 생각은 미주하고, SVG로 도트 매트릭스를 생성하면 즐거운 것이 아닐까라는 아이디어에 빠져들게 됩니다.
HC-20이나 PC-1500의 그래픽도 재현할 수 버린다?
<svg id="matrix" width="220" height="220"></svg>
했어! 인라인 SVG를 작성했습니다.
요소를 생성하고 appendChild합니다.
mtx = document.getElementById("matrix");
dotMatrix = {}
//色指定
dotOff = "powderblue";
dotOn = "darkslategray";
//マトリクスのドット数
mtxWidth = 10;
mtxHeight = 10;
//ドットのサイズ
dotWidth = 20;
dotHeight = 20;
//マトリクス生成
for (var x = 0; x <= mtxWidth - 1; x++){
for (var y = 0; y <= mtxHeight - 1; y++){
//オブジェクトIDを付ける
dotName = "dot" + x + ":" + y;
dot=document.createElementNS('http://www.w3.org/2000/svg','rect');
dot.setAttribute('id',dotName);
dot.setAttribute('x',x * (dotWidth + 1));
dot.setAttribute('y',y * (dotHeight + 1));
dot.setAttribute('width',dotWidth);
dot.setAttribute('height',dotHeight);
dot.setAttribute('stroke','none');
dot.setAttribute('fill',dotOff);
dot.setAttribute('rx',2);
dot.setAttribute('ry',2);
mtx.appendChild(dot);
dotMatrix[dotName] = dot;
}
}
//色付きの初期配置
dx = parseInt(mtxWidth / 2);
dy = parseInt(mtxHeight / 2);
dotFill(dx,dy,dotOn);
id를 "dot + x 좌표 + : + y 좌표"라고 나름대로 직관적인 명명으로 해시로 설정.
dotFill 함수에 좌표와 색 정보를 주면 요소에 색을 칠합니다.
//ドットを指定色で塗る関数
function dotFill(dx,dy,para){
dotName = "dot" + dx + ":" + dy;
dot = dotMatrix[dotName];
dot.attributes['fill'].nodeValue = para;
}
아, 함수명은 PSET 쪽이 좋았을까・・・.
이런 느낌입니다.
//キーイベント処理
document.onkeydown = function(e){
dotFill(dx,dy,dotOff);
//右矢印
if ((e.keyCode == 39) && (dx < mtxWidth - 1)){
dx++;
}
//左矢印
if ((e.keyCode == 37) && (dx > 0)){
dx--;
}
//上矢印
if ((e.keyCode == 38) && (dy > 0)){
dy--;
}
//下矢印
if ((e.keyCode == 40) && (dy < mtxHeight - 1)){
dy++;
}
dotFill(dx,dy,dotOn);
}
화살표 키를 주워 그리면 지워.
솔직히,이 코드는 깜박임이 엄격하고 도트 수가 많으면 눈이 피곤합니다.
게임 등에 사용할 수 있도록 고속화를 목표로하고 싶습니다.
Reference
이 문제에 관하여(JavaScript+SVG로 도트 매트릭스 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tkotobu1048/items/d20632dac62ea8a4a077
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
라이브러리를 사용하는 것이 정답이라고 생각합니다.
자바스크립트 + SVG 벽
선인의 기사를 보면 어쨌든 제한 사항이 많아 길은 어렵다.
인라인 SVG라면 여러가지 조작할 수 있다고 하는 기술을 보는 것도, 그 소스를 붙여 넣는 것은 싫다.
심플한 SVG로 8bit인 느낌을 할 수 없는 것인가.
Let's Generate!
더 이상 생각은 미주하고, SVG로 도트 매트릭스를 생성하면 즐거운 것이 아닐까라는 아이디어에 빠져들게 됩니다.
HC-20이나 PC-1500의 그래픽도 재현할 수 버린다?
<svg id="matrix" width="220" height="220"></svg>
했어! 인라인 SVG를 작성했습니다.
요소를 생성하고 appendChild합니다.
mtx = document.getElementById("matrix");
dotMatrix = {}
//色指定
dotOff = "powderblue";
dotOn = "darkslategray";
//マトリクスのドット数
mtxWidth = 10;
mtxHeight = 10;
//ドットのサイズ
dotWidth = 20;
dotHeight = 20;
//マトリクス生成
for (var x = 0; x <= mtxWidth - 1; x++){
for (var y = 0; y <= mtxHeight - 1; y++){
//オブジェクトIDを付ける
dotName = "dot" + x + ":" + y;
dot=document.createElementNS('http://www.w3.org/2000/svg','rect');
dot.setAttribute('id',dotName);
dot.setAttribute('x',x * (dotWidth + 1));
dot.setAttribute('y',y * (dotHeight + 1));
dot.setAttribute('width',dotWidth);
dot.setAttribute('height',dotHeight);
dot.setAttribute('stroke','none');
dot.setAttribute('fill',dotOff);
dot.setAttribute('rx',2);
dot.setAttribute('ry',2);
mtx.appendChild(dot);
dotMatrix[dotName] = dot;
}
}
//色付きの初期配置
dx = parseInt(mtxWidth / 2);
dy = parseInt(mtxHeight / 2);
dotFill(dx,dy,dotOn);
id를 "dot + x 좌표 + : + y 좌표"라고 나름대로 직관적인 명명으로 해시로 설정.
dotFill 함수에 좌표와 색 정보를 주면 요소에 색을 칠합니다.
//ドットを指定色で塗る関数
function dotFill(dx,dy,para){
dotName = "dot" + dx + ":" + dy;
dot = dotMatrix[dotName];
dot.attributes['fill'].nodeValue = para;
}
아, 함수명은 PSET 쪽이 좋았을까・・・.
이런 느낌입니다.
//キーイベント処理
document.onkeydown = function(e){
dotFill(dx,dy,dotOff);
//右矢印
if ((e.keyCode == 39) && (dx < mtxWidth - 1)){
dx++;
}
//左矢印
if ((e.keyCode == 37) && (dx > 0)){
dx--;
}
//上矢印
if ((e.keyCode == 38) && (dy > 0)){
dy--;
}
//下矢印
if ((e.keyCode == 40) && (dy < mtxHeight - 1)){
dy++;
}
dotFill(dx,dy,dotOn);
}
화살표 키를 주워 그리면 지워.
솔직히,이 코드는 깜박임이 엄격하고 도트 수가 많으면 눈이 피곤합니다.
게임 등에 사용할 수 있도록 고속화를 목표로하고 싶습니다.
Reference
이 문제에 관하여(JavaScript+SVG로 도트 매트릭스 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tkotobu1048/items/d20632dac62ea8a4a077
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
더 이상 생각은 미주하고, SVG로 도트 매트릭스를 생성하면 즐거운 것이 아닐까라는 아이디어에 빠져들게 됩니다.
HC-20이나 PC-1500의 그래픽도 재현할 수 버린다?
<svg id="matrix" width="220" height="220"></svg>
했어! 인라인 SVG를 작성했습니다.
요소를 생성하고 appendChild합니다.
mtx = document.getElementById("matrix");
dotMatrix = {}
//色指定
dotOff = "powderblue";
dotOn = "darkslategray";
//マトリクスのドット数
mtxWidth = 10;
mtxHeight = 10;
//ドットのサイズ
dotWidth = 20;
dotHeight = 20;
//マトリクス生成
for (var x = 0; x <= mtxWidth - 1; x++){
for (var y = 0; y <= mtxHeight - 1; y++){
//オブジェクトIDを付ける
dotName = "dot" + x + ":" + y;
dot=document.createElementNS('http://www.w3.org/2000/svg','rect');
dot.setAttribute('id',dotName);
dot.setAttribute('x',x * (dotWidth + 1));
dot.setAttribute('y',y * (dotHeight + 1));
dot.setAttribute('width',dotWidth);
dot.setAttribute('height',dotHeight);
dot.setAttribute('stroke','none');
dot.setAttribute('fill',dotOff);
dot.setAttribute('rx',2);
dot.setAttribute('ry',2);
mtx.appendChild(dot);
dotMatrix[dotName] = dot;
}
}
//色付きの初期配置
dx = parseInt(mtxWidth / 2);
dy = parseInt(mtxHeight / 2);
dotFill(dx,dy,dotOn);
id를 "dot + x 좌표 + : + y 좌표"라고 나름대로 직관적인 명명으로 해시로 설정.
dotFill 함수에 좌표와 색 정보를 주면 요소에 색을 칠합니다.
//ドットを指定色で塗る関数
function dotFill(dx,dy,para){
dotName = "dot" + dx + ":" + dy;
dot = dotMatrix[dotName];
dot.attributes['fill'].nodeValue = para;
}
아, 함수명은 PSET 쪽이 좋았을까・・・.
이런 느낌입니다.
//キーイベント処理
document.onkeydown = function(e){
dotFill(dx,dy,dotOff);
//右矢印
if ((e.keyCode == 39) && (dx < mtxWidth - 1)){
dx++;
}
//左矢印
if ((e.keyCode == 37) && (dx > 0)){
dx--;
}
//上矢印
if ((e.keyCode == 38) && (dy > 0)){
dy--;
}
//下矢印
if ((e.keyCode == 40) && (dy < mtxHeight - 1)){
dy++;
}
dotFill(dx,dy,dotOn);
}
화살표 키를 주워 그리면 지워.
솔직히,이 코드는 깜박임이 엄격하고 도트 수가 많으면 눈이 피곤합니다.
게임 등에 사용할 수 있도록 고속화를 목표로하고 싶습니다.
Reference
이 문제에 관하여(JavaScript+SVG로 도트 매트릭스 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tkotobu1048/items/d20632dac62ea8a4a077텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)