구조 함수 & 클래스 - canvas 소구 충돌
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
//
function Ball(x,y,r,color,speedx,speedy){
this.x = x;
this.y = y;
this.r = r;
this.color = color;
this.speedx = speedx;
this.speedy = speedy;
}
//
Ball.prototype.draw = function(){
context.beginPath();
context.arc(this.x,this.y,this.r,0,Math.PI*2);
context.fillStyle = this.color;
context.fill();
}
//
Ball.prototype.move = function(){
this.x += this.speedx;
this.y += this.speedy;
//
if(this.x < this.r || this.x > canvas.width - this.r){
this.speedx *= -1;
}
if(this.y < this.r || this.y > canvas.height - this.r){
this.speedy *= -1;
}
}
//
function randomNum(min,max){
return parseInt(Math.random()*(max-min)+min);
}
function randomColor(){
return "rgb("+randomNum(0,256)+","+randomNum(0,256)+","+randomNum(0,256)+")";
}
var arr = [];
for(var i = 0;i < 100;i++){
var r = randomNum(1,50);
var x = randomNum(r,canvas.width - r);
var y = randomNum(r,canvas.height - r);
var speedx = randomNum(1,10);
var speedy = randomNum(1,10);
var color = randomColor();
var newBall = new Ball(x,y,r,color,speedx,speedy);
arr.push(newBall);
}
//
function act(){
context.clearRect(0,0,canvas.width,canvas.height);
for(var i = 0;i < arr.length;i++){
arr[i].draw();
arr[i].move();
}
window.requestAnimationFrame(act);
}
act();
2.클래스 캔버스 소구 충돌
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
class Ball{
constructor(x,y,r,color,speedx,speedy){
this.x = x;
this.y = y;
this.r = r;
this.color = color;
this.speedx = speedx;
this.speedy = speedy;
}
//
draw(){
context.beginPath();
context.arc(this.x,this.y,this.r,0,Math.PI*2);
context.fillStyle = this.color;
context.fill();
}
//
move(){
this.x += this.speedx;
this.y += this.speedy;
//
if(this.x < this.r || this.x > canvas.width - this.r){
this.speedx *= -1;
}
if(this.y < this.r || this.y > canvas.height - this.r){
this.speedy *= -1;
}
}
}
//
function randomNum(min,max){
return parseInt(Math.random()*(max-min)+min);
}
function randomColor(){
return "rgb("+randomNum(0,256)+","+randomNum(0,256)+","+randomNum(0,256)+")";
}
var arr = [];
for(var i = 0;i < 100;i++){
var r = randomNum(1,50);
var x = randomNum(r,canvas.width - r);
var y = randomNum(r,canvas.height - r);
var speedx = randomNum(1,10);
var speedy = randomNum(1,10);
var color = randomColor();
var newBall = new Ball(x,y,r,color,speedx,speedy);
arr.push(newBall);
}
//
function act(){
context.clearRect(0,0,canvas.width,canvas.height);
for(var i = 0;i < arr.length;i++){
arr[i].draw();
arr[i].move();
}
window.requestAnimationFrame(act);
}
act();
위에서 보듯이 유형별로 대상을 향한 방법을 쓰면 사고방식이 더욱 뚜렷하다.물론 호환성을 고려할 때에도 구조 함수를 사용한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.