2016-10-27 2 views
1

CSS3를 사용하여 너비와 높이를 설정하여 반응 형으로 만들고 싶은 HTML 캔버스 게임이 있습니다.JavaScript 캔버스 게임을 CSS3로 반응

JS 캔버스 게임의 코드는 다음과 같습니다

<div id="main"> 
     <div class="game-box"> 
      <div class="game-container"> 
        <div id="phaser-div"> 

        </div> 
      </div><!-- end game-container --> 
     </div><!-- end game-box --> 



    <script src="js/jquery-1.11.2.min.js"></script> 
    <script src="js/bootstrap.min.js"></script> 
    <script src="js/phaser.min.js"></script> 
    <script> 
     var game = new Phaser.Game(832, 508, Phaser.WEBGL, 'phaser-div', { preload: preload, create: create, update: update }); 

var background; 
var filter; 

function preload() { 

    var urlBase = location.href.substring(0, location.href.lastIndexOf("/") + 1); 
    game.load.image('phaser', urlBase + 'games/game001/game001-logo.png'); 
    game.load.script('filter', urlBase + 'games/game001/marble.js'); 

    this.game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL; this.game.scale.setShowAll(); window.addEventListener('resize', function() { this.game.scale.refresh(); }); this.game.scale.refresh(); 
} 

function create() { 

    var logo = game.add.sprite(game.world.centerX, game.world.centerY, 'phaser'); 
    logo.anchor.setTo(0.5, 0.5); 

    background = game.add.sprite(0, 0); 
    background.width = 832; 
    background.height = 508; 

    filter = game.add.filter('Marble', 832, 508); 
    filter.alpha = 0.2; 

    // The following properties are available (shown at default values) 

    // filter.speed = 10.0; 
    // filter.intensity = 0.30; 

    background.filters = [filter]; 

} 

function update() { 

    filter.update(); 

} 
    </script> 

라이브 링크 :
http://revolutionarydeveloper.com/project-games/index.html

나는 #에 같은 설정을 시도 페이저를-DIV 캔버스 {폭 : 100 %; 높이 : 470 픽셀;}하지만 작동하지 않는 것 같습니다. CSS3를 사용하여 반응 형으로 만들고 미디어 쿼리를 사용하여 너비와 높이를 수정하려면 어떻게해야합니까?

많은 감사

참고 :이 게임은 Phaser.JS를 사용합니다. 관련된 경우 해당 링크를 포함합니다.
https://cdn.jsdelivr.net/phaser/2.6.2/phaser.js

답변

1
+0

이 좋은에서 반응 게임

Phaser.ScaleManager.SHOW_ALL; 

모양을 만들기위한 자신의 코드를 가지고 있지만, 문제는 그것으로있다. 페이 저가 제대로 조정되도록 페이지를 새로 고쳐야합니다. 즉, 페이지로드시 반응합니다. 하지만 페이지의 크기를 조정하면 제대로 확장되지 않습니다. 페이지 크기가 변경 될 때마다 업데이트하도록하는 방법이 있습니까? 그렇지 않다면 CSS를 사용하여 너비와 높이를 제어 할 수 있습니까? –

+0

몸체에 크기 조절 이벤트를 첨부하고 크기 조절 속성의 기초를 결정하는 등 코드를 작성해야합니다. 페이저는 캔버스를 자주 그리므로 부트 스트랩처럼 반응하지 않을 수 있습니다 (페이저 캔버스는 우리가 말할 수있는 요소 일뿐만 아니라 그것은 애니메이션 그림입니다). – anshuVersatile

+0

설명 anshu 주셔서 감사합니다. 페이지 너비에 따라 페이저 캔버스의 크기를 조정할 수있는 코드를 작성하는 방법을 안내해 주시면 자바 스크립트 스킬 수준이 매우 중간 수준이므로이 점을 높이 평가할 것입니다. –

0
Phaser method 

this.time.events.add(200, function() { 
    MyGame.calculateDimensions();    
    this.scale.setGameSize(MyGame.canvasWidth, MyGame.canvasHeight);   
}, this); 


jQuery method 

$(window).resize(function() { resizeGame(); }); 
    function resizeGame() { 

    var innerWidth = window.innerWidth; 
    var innerHeight = window.innerHeight; 
    var gameRatio = innerWidth/innerHeight; 

    game.width = Math.ceil(320*gameRatio); 
    game.height = 320; 
    game.stage.bounds.width = Math.ceil(320*gameRatio); 
    game.stage.bounds.height = 320; 
    game.scale.refresh(); 

} 
+0

jQuery 메서드가 작동하지 않습니다. 함수 미리로드에 페이저 메서드를 추가했으나 작동하지 않았습니다. 이것에 대한 이유는 무엇일까요? –

+0

https://github.com/EnclaveGames/Enclave-Phaser-Template/에서 완전히 반응합니다. – anshuVersatile