>  기사  >  웹 프론트엔드  >  HTML5 객체지향 게임 개발의 간단한 예 공유

HTML5 객체지향 게임 개발의 간단한 예 공유

黄舟
黄舟원래의
2017-03-16 16:02:561423검색

HTML5 게임 개발에 대한 책을 읽다가 좋은 예를 발견했습니다. 이 예를 통해 객체 지향 개발에 대해 더 깊이 이해할 수 있었습니다. 이 객체가 달성하고자 하는 것은 CSS 스프라이트의 이미지를 캔버스에 그리는 것입니다. 먼저 SpriteSheet 객체를 생성합니다. 코드는 다음과 같습니다.

var SpriteSheet = new function(){
	this.map = { };
	this.load = function(spriteData,callback){
		this.image = new Image();
		this.image.onload = callback;
		this.image.src = "images/sprites.png";
	};
	this.draw = function(ctx,sprite,x,y,frame){
		var s = this.map[sprite];
		if (!frame) {
			frame = 0;
		};
		ctx.drawImage(this.image, s.sx+frame*s.w, s.sy, s.w, s.h, x, y, s.w, s.h);
	};
}

먼저 new function(){}을 사용하여 인스턴스가 하나만 생성되도록 합니다.

다음으로, 객체 내부에는 이를 통해 두 개의 메소드와 속성 이 바인딩되어 있습니다. load 메소드는 이미지를 로딩하는 역할을 하며 2개의 파라미터를 전달합니다. 첫 번째 파라미터는 이미지 정보, 즉 스프라이트에 그려질 이미지의 위치와 크기, 캔버스에서의 위치와 크기입니다. 콜백 사용법에 주의하세요. This.image.onload = callbak; 이미지가 로드되면 전달된 콜백 함수 가 실행됩니다.

드로우 메소드는 캔버스의 컨텍스트와 그려야 할 이미지 객체 정보, 이미지 위치를 전달하여 이미지를 그리는 데 사용됩니다.

이 개체의 논리적 구조는 상대적으로 복잡합니다. 기본 아이디어는 로드 방법을 사용자 정의하고 로드 방법을 통해 이미지 정보 로드를 완료하는 것입니다. 여기서 이미지 정보는 스프라이트 내 이미지의 위치, 크기 등을 의미한다.

이 객체를 사용하기 위한 메소드 코드는 다음과 같습니다.

function startGame(){
	SpriteSheet.load({
		ship:{sx:0, sy:0, w:18, h:35, frames:3}
	},function(){
		SpriteSheet.draw(ctx,"ship",0,0);
		SpriteSheet.draw(ctx,"ship",100,50);
		SpriteSheet.draw(ctx,"ship",150,100,1);
	});
}

여기에서는 먼저 필요한 커팅 부분의 관련 데이터를 전달한 후 그리기 메소드를 사용합니다. 객체의 콜백 함수가 호출됩니다.

위 내용은 HTML5 객체지향 게임 개발의 간단한 예 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.