2017-01-31 14 views
0

나는 순수한 JavaScript/CSS/HTML로 게임을 해왔으며, 1920x1080 휴대 전화에서 내 게임을 픽셀 디스플레이 비율 3 인 586x330으로 표시하는 문제가 발생했습니다. 알고 싶습니다. 내 게임은 고해상도 일 때 저해상도 게임을하고 싶지 않기 때문에 HD 화면에서 실행됩니다.휴대 전화에서 HD 게임을 만들 수 있도록 JavaScript의 CSS 픽셀 비율을 취소하려면 어떻게해야합니까?

웹 브라우저 (데스크톱 또는 모바일)에서 게임을 실행할 때 픽셀 밀도가 1이므로 모든 것이 정상입니다. PhoneGap을 사용하여 Android 앱으로 실행할 때 문제가 발생합니다.

어떤 도움을 주시면 감사하겠습니다.

감사합니다, 나는 그것이 대부분의 게임을위한 그래픽 기반의대로 <canvas> 요소를 사용하고 있으리라 믿고있어

+1

[drawImage가 img 태그와 비교하여 나쁜 품질을 생성 할 수 있습니다] (http://stackoverflow.com/questions/41528103/drawimage-generates-bad-quality-compared-to-img-tag) – Kaiido

+0

Do not dismiss dPR, 사용 : dPR로 캔버스 크기를 조절 한 다음 CSS를 통해 크기를 줄입니다. 캔버스에 올바른 dPR을 얻을 수 있습니다. (항상 CSS와 속성 크기 사이의 캔버스 비율을 존중하는 것을 잊지 마십시오!) – Kaiido

답변

0

.

인라인 widthheight 속성을 사용하여 크기를 조정해야합니다. 인라인, 나는 사람이 그대로 HTML에 포함 된 의미 : 당신이 있는지 확인하려면 것은 다른 크기가 캔버스에 적용되고 있지 있다는 것입니다

<canvas width="--your width--" height="--your height--"> 
</canvas> 

. 이것의

없음 :

/* style.css */ 
canvas { 
    transform: scale(1.5, 1.5); 
} 

그리고이 심지어 없음 :

/* style.css */ 
canvas { 
    width: 100%; 
    height: 100%; 
} 

건은 캔버스가 작동하는 해상도의 픽셀의 수는 정의되어 있지 않은 것을 인라인 widthheight 속성에 따라 물론

/* thing.js */ 
var resizeCanvas = function() { 
    var canvasElem = getYourCanvasElement(); 

    canvasElem.width = getWidthOfScreen(); 
    canvasElem.height = getHeightOfScreen(); 
} 

// Make sure canvas fits initially... 
whenPageLoads(resizeCanvas); 

// And then resize it whenever needed 
whenScreenSizeChanges(resizeCanvas); 

당신이있어 프레임 워크 모르는 : 당신은 당신의 캔버스 휴대 전화 화면과 동일한 해상도를 가지고 싶다면 당신은 widthheight 때마다 화면 크기 변경을 수정하는 자바 스크립트를 사용할 필요가 그래서 코드는 단지 템플릿 일 뿐이다. getYourCanvasElement, getWidthOfScreen, getHeightOfScreen, whenPageLoadswhenScreenSizeChanges을 구현하는 방법을 결정해야합니다.

편집 : 캔버스의 크기에 영향을 줄 수있는 다른 하나는 브라우저 뷰포트 크기 조정입니다. 그 좋은 통찰력은 here입니다.

+0

도움을 주셔서 감사합니다! 요소를 사용하고 있습니다. 나는 10px 경계와 절대 위치에서 벗어난 어떤 CSS 스타일링도 가지고 있지 않다. 너비와 높이를 정의하는 데 사용하고있는 것은 window.innerWidth와 window.innerHeight를 사용하고 있는데,이 문제의 근원이 될지 모르겠다. 나는 다른 사람들이 window.screen.height를 사용하는 것을 보았다. –

+0

아니요 문제! 뷰포트 크기 조정을 실행 중일 수 있습니다. 내 대답의 맨 아래에서 내 편집 확인 :) –