본문 바로가기

분류 전체보기518

HTML Canvas(캔버스) 애니메이션 구현 방법 기초 # canvas 애니메이션 구현 기본 원리 1. HTML 캔버스 생성(html) 2. 캔버스 및 그리기 객체 취득(Javascript) const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); 3. "애니메이션 함수" 선언 function animate(){ ... 변화를 발생시키는 코드... } * 캔버스 내의 그림을 다른 위치/색상 등으로 변화시키는 함수 구현 * 기존 그림을 제거하기 위해서는 ctx.clearRect(x좌표, y좌표, 너비, 높이) 함수를 활용 4. "setInterval(콜백함수, 시간ms)"로 애니메이션 함수 반복 호출 setInterval(animate, 30); * anima.. 2021. 6. 4.
HTML Canvas(캔버스) 텍스트 그리기 방법: fillText, strokeText # canvas에 텍스트(글자) 쓰기 1. 글자 색 설정 ctx.fillStyle = "색상"; 2. 폰트 설정 ctx.font = "스타일 굵기 크기 서체" 1) 스타일: normal(디폴트)|italic|oblique 2) 굵기: normal(디폴트)|bold|bolder|lighter 3) 크기: 숫자px(디폴트 10px) 4) 서체: sans-serif(디폴트)|Arial ... * 미지정시 ctx.font = "10px sans-serif" 디폴트 적용됨 3. 텍스트 정렬 1) 좌우정렬: ctx.textAlign = "start(디폴트)|end|center|left|right"; 2) 상하정렬: ctx.textBaseline= "alphabetic(디폴트)|top|hanging|middle|id.. 2021. 6. 4.
HTML Canvas(캔버스) 패턴 이미지 채우기 적용 방법: createPattern # 이미지를 반복 패턴으로 채우기 방법 1. 이미지 객채 생성 const img = new Image(); 2. 이미지 소스 설정 img.src = '이미지 경로'; 3. 패턴 객체 생성 const pattern = ctx.createPattern(img, 'repeat'); * repeat: 이미지 패턴 반복 * repeat-x: x축 반복 * repeat-y: y축 반복 * no-repeat: 반복 안함 4. 패턴 적용 ctx.fillStyle = pattern; * fillStyle 적용 후, ctx.fillRect(x좌표, y좌표, 길이, 높이); 처럼 색을 채우면 패턴이 적용된다. 참고) 상황에 따라, 이미지 로드가 완료된 후 적용하는 것이 안전하다. img.onload = function(){.. 2021. 6. 4.
HTML Canvas(캔버스): 이미지 그리기 방법 drawImage # 캔버스에 이미지 띄우는 방법 1. 이미지 객체 생성 const img = new Image(); 2. 이미지 소스 설정 img.src = '이미지 경로'; 3. 이미지 그리기 ctx.drawImage(img, x좌표, y좌표, 너비, 높이); * 너비/높이는 옵션이며, 생략시 원본 크기대로 이미지를 띄운다. 참고) 아래와 같이 이미지 로드가 완료된 후에 그리도록 설정하는게 안전하다. img.onload = function(){ ctx.drawImage(img, x좌표, y좌표, 너비, 높이) } 참고) sprite 이미지 사용시, 이미지 자르기 옵션을 추가 적용한다. ctx.drawImage(img, sx, sy, swidth, sheight, x, y, width, height); * 스프라이트 이.. 2021. 6. 4.
[자바스크립트] setInterval/clearInterval 반복 중단, 재시작(재개) 방법 setInterval(콜백함수, 시간) 는 "시간(ms)"을 간격으로 "콜백함수"를 반복 호출 하는 함수이다. 애니메이션 등을 구현하다보면, 잠깐 반복을 중단했다가, 재시작하는 코드를 구현해야할 때가 있다. 방법은 간단하다. setInterval 함수의 반환값을 변수에 할당해두고, clearInterval(변수)를 호출하여 반복을 중단하고, 다시 setInterval로 재시작해주면 된다. # setInterval 중단/재시작 방법 1. setInterval()함수의 반환값을 변수에 할당하여 반복 시작 let 변수 = setInterval(콜백함수, 시간); 2. clearInterval(변수)로 반복 중단 clearInterval(변수); 3. setInterval()함수의 반환값을 변수에 재할당하여 재.. 2021. 6. 3.
HTML Canvas(캔버스): 그라데이션 gradient 색 설정 방법 캔버스 기초는 아래 글 참고 HTML Canvas(캔버스) 기초: 기본 사용 방법 & 샘플 예제 코드 # canvas 그라데이션: 방법 정리 1. 그라데이션 객체 생성 1)선형: 그리기객체.createLinearGradient(시작 X좌표, 시작 Y좌표, 끝 X좌표, 끝 Y좌표) 2)방사형: 그리기객체.createRadialGradient(시작 X좌표, 시작 Y좌표, 시작 반지름, 끝 X좌표, 끝 Y좌표, 끝 반지름) 2. 그라데이션 위치, 색상 지정 : 그라데이션객체.addColorStop(위치, 색상) * 위치는 0(시작)~1(끝) 사이의 값으로 설정 3. 그리기 객체의 색상으로 그라데이션 설정 : 그리기객체.fillStyle = 그라데이션객체; # canvas 그라데이션: 샘플 예제 코드 선형 그라.. 2021. 6. 3.
HTML Canvas(캔버스): 원 circle 그리기 방법 캔버스 기초는 아래 글 참고 HTML Canvas(캔버스) 기초: 기본 사용 방법 & 샘플 예제 코드 # canvas 원 그리기: 방법 정리 1. path 시작 설정 이 설정을 해주어야, 새로운 선을 그릴 준비가 된다.(안 그러면 이전에 그린 선과 이어진다) : ctx.beginPath() 2. 원 모양 설정 : ctx.arc(x, y, 반지름, 시작각도, 마지막각도) * x, y는 원의 중심 좌표 * 시작각도: 0, 마지막각도: 2*Math.PI 로 설정하면 360도의 원이 그려진다. 3. 원 그리기 : ctx.stroke() 4. 원 색 채우기 1) 색 설정: ctx.fillStyle = "색상"; 2) 색 채우기: ctx.fill(); # canvas 원 그리기: 샘플 예제 코드 원을 그리고 색까지.. 2021. 6. 3.
HTML Canvas(캔버스): 사각형 그리기 방법 캔버스 기초에 대한 내용은 아래 글 참고 HTML Canvas(캔버스) 기초: 기본 사용 방법 & 샘플 예제 코드 # canvas에서 사각형 그리기: 코드 정리 1. '선'만으로 이루어진 사각형 그리기 1) 선색 설정: ctx.strokeStyle = '선 색상' 2) 선으로 사각형 그리기: ctx.strokeRect(x좌표, y좌표, 가로, 세로) 2. '색'으로 채워진 사각형 그리기 1) 내부 색상 설정 : ctx.fillStyle = '내부 색상'; 2) 사각형 그리기: ctx.fillRect(x좌표, y좌표, 가로, 세로); 3. '선+색' 사각형 그리기 : '선'사각형과 '색'사각형을 같은 자리에 그리면 된다. 1) '선'사각형 그리고: ctx.strokeRect(x좌표, y좌표, 가로, 세로).. 2021. 6. 3.
HTML Canvas(캔버스) 선 그리기 방법 총정리: 7가지 샘플 예제 코드 # HTML Canvas 선 그리기 방법 1. 새로운 선 그리기 설정: ctx.beginPath() 2. 선의 출발점 지정 : ctx.moveTo(x, y) 3. 선의 도착점 지정 : ctx.lineTo(x, y) 4. 선 그리기 : ctx.stoke() * 여러개의 선을 그릴 때는 매번 beginPath() 호출 필요 * beginPath()를 호출하지 않으면, 도착점들을 계속 잇는 선이 그려진다. # 선 디자인 설정 방법 1. 선 디자인 설정 1) 색상 설정: ctx.strokeStyle = '색상'; 2) 두께 설정: ctx.lineWidth = 숫자; * 선 색상/두께는 그리기(ctx.stoke()) 전에 설정 2. 선 끝부분 설정: ctx.lineCap = "butt/square/round" 1.. 2021. 6. 1.