연말까지 매일 웹 사이트를 꾸준히 제작하는 대학생~64일째 랜덤 위치에서 랜덤으로 입력 문자를 표시합니다~
13651 단어 JavaScript
개시하다
안녕하세요@70days_js
문자를 입력하면 임의의 위치에 임의의 크기로 표시됩니다.gif↓
64일째.(2019/12/21)
잘 부탁드립니다.
사이트 축소판 그림
해본 일
이벤트 청취자 포착 버튼을 통해 문자를 입력하여 대상을 하나씩 만듭니다.
50자를 입력하면 모든 대상은 사라진다.
html↓
<body>
<div id="countWrapper">COUNT: <span id="count"></span></div>
<canvas id="canvas"></canvas>
</body>
css↓body {
height: 100vh;
margin: 0;
background-color: black;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
#canvas {
border: solid 1px rgba(31, 227, 13, 1);
}
#countWrapper {
color: rgba(31, 227, 13, 1);
padding-bottom: 20px;
}
JavaScript(61줄)↓let canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d"),
twidth = (canvas.width = 500),
theight = (canvas.height = 500),
chars = [],
count = document.getElementById("count"),
fontSize = Math.random() * 100,
countNumber = 0;
function Character(ctx, e) {
this.ctx = ctx;
this.x = Math.floor(Math.random() * twidth);
this.y = Math.floor(Math.random() * theight);
this.size = fontSize;
this.char = String.fromCharCode(e.keyCode);
}
Character.prototype.render = function() {
this.draw();
};
Character.prototype.draw = function() {
let ctx = this.ctx;
ctx.beginPath();
ctx.fillStyle = "rgba(31, 227, 13, .5)";
ctx.font = this.size + "px Arial";
ctx.fill();
ctx.fillText(this.char, this.x, this.y);
ctx.closePath();
};
//_________keydown_________;
document.addEventListener("keydown", logKey, false);
function logKey(e) {
if (countNumber >= 50) {
countNumber = 0;
chars.length = 0;
alert("Characters are not eternal.");
} else if (e.keyCode < 65 || e.keyCode > 91) {
return false;
} else {
let char = new Character(ctx, e);
chars.push(char);
countNumber++;
count.innerHTML = countNumber;
}
}
function render() {
fontSize = Math.random() * 100;
ctx.clearRect(0, 0, twidth, theight);
for (var i = 0; chars.length > i; i++) {
let char = chars[i];
char.render();
}
requestAnimationFrame(render);
}
render();
function Character(ctx, e) {...}↑ 이것은 구조기다.
위치, 크기 및 문자를 포함합니다.
여러 가지 물건을 가득 채우고 나니 지도원의 역할을 감당할 수 있을지 고민이다.
구조기로 대상의 고유한 값을 입력하는 것은 어떻습니까?
이 대상은render () 방법을 통해draw () 방법을 실행합니다.
메서드 수가 증가하면 render () 메서드를 사용합니다.
render 함수 (방법이 아닙니다) 는 fontsize를 무작위 값으로 다시 설정합니다.
fontSize = Math.random() * 100;
송이경(신지현)
이것은 지금 화포를 기다리고 있다.↓
ctx.clearRect(0, 0, twidth, theight);
for 문장에서 모든 대상을 실행하는 방법입니다.↓
for (var i = 0; chars.length > i; i++) {
let char = chars[i];
char.render();
}
감상
오늘 나는 내가 너무 많이 한 것을 반성했다.
대상을 대상으로 하는 프로그래밍서를 잘 읽어야 한다.
끝까지 읽어주셔서 감사합니다.내일도 투고할 테니 잘 부탁드립니다.
Reference
이 문제에 관하여(연말까지 매일 웹 사이트를 꾸준히 제작하는 대학생~64일째 랜덤 위치에서 랜덤으로 입력 문자를 표시합니다~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/70days_js/items/7964b21c0c87af68bba7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)