이 열쇠는 좌표 공간 stage.position과 함께 stage.scale 플러스 절대를 처리 할 수있는 트릭의 몇 가지를 사용하여 고정하는 것이 었습니다 :
// @param size window size {width, height}
MyScene.prototype.scaleAndCenterScene = function (size) {
var hfactor = size.width/this.baseWidth;
var vfactor = size.height/this.baseHeight;
var factor = Math.min(hfactor, vfactor);
// resize stage
this.stage.setSize(size);
// scale stage
this.stage.setScale({
x: factor,
y: factor
});
// calculate center
var pos = {
x: (size.width - this.baseWidth) * 0.5,
y: (size.height - this.baseHeight) * 0.5
};
// center layer
this.backgroundLayer.position(pos);
// redraw
this.stage.batchDraw();
};
JSFiddle는에서 확인할 수있다. 나는 이것에 블로그 포스트를 썼다 : https://coderwall.com/p/dy_dla.
jsfiddle을 만들 수 있습니까? – lavrton
@lavrton jsfiddle 링크로 게시물을 업데이트했습니다. 'stage.scale'의 주석 처리를 해제하여 스케일링이 어떻게 작동하는지 확인하십시오. 어쩌면 뭔가를 얻지 못할 수도 있지만 스케일링을 사용할 때 좌표가 캔버스 크기에 매핑 될 것으로 예상됩니다. – Andy
@lavrton이 문제에 대한 의견이 있으십니까? 나는 마스터와 똑같은 문제를 조사했다. 내가 뭔가 잘못하고 있는거야? – Andy