使游戏响应(适合不同的屏幕尺寸)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使游戏响应(适合不同的屏幕尺寸)相关的知识,希望对你有一定的参考价值。

我正在React JS的一个游戏项目中工作。我无法使其响应。它更像是一个CSS问题,而不是我认为的反应。有人可以建议一种方法来纠正这个问题。这就是我创建游戏场景的方式

这是Level的代码: -

import React from "react";
import Scene from "../components/Scene";
import Sobject from "../components/Object";
import Room from "../images/level1/Room.png";
import Bed from "../images/level1/Bed.png";
import Bag from "../images/level1/Bag.png";
import Book from "../images/level1/Books.png";
import Window from "../images/level1/Window.png";
import { Link } from "react-router-dom";
import ReactCountdownClock from "react-countdown-clock";

export default class Level extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0,
      show: false
    };
  }

  render() {
    return (
      <div>
        <Scene>
          <Sobject name={"room"} xPos={0} yPos={0}>
            <img src={Room} height="725" width="1485" />
          </Sobject>
          <Sobject name={"bed"} xPos={20} yPos={280}>
            <img src={Bed} height="445" width="850" />
          </Sobject>
          <Sobject name={"window"} xPos={10} yPos={20}>
            <img src={Window} height="260" width="380" />
          </Sobject>
          <Sobject name={"bag"} xPos={40} yPos={470}>
            <img src={Bag} height="200" />
          </Sobject>

          <Sobject name={"book"} xPos={440} yPos={330}>
            <img src={Book} height="180" width="180" />
          </Sobject>
        </Scene>
      </div>
    );
  }
}

这是场景组件: -

import React from "react";
export default class Scene extends React.Component {
  render() {
    return <div className={"scene-container"}>{this.props.children}</div>;
  }
}

这是对象组件: -

import React from "react";

export default class Sobject extends React.Component {
  constructor(props) {
    super(props);
    this.name = props.name | "";
    this.type = "generic";
    this.xPos = props.xPos | 0;
    this.yPos = props.yPos | 0;
  }

  render() {
    return (
      <div
        className={"object-container"}
        style={{
          left: this.xPos,
          top: this.yPos
        }}
      >
        {this.props.children}
      </div>
    );
  }
}

对象和场景的萨斯: -

.scene-container
  position: absolute
  height: 100vh
  width: 100%
  background-color: black
  cursor: pointer

.object-container
  position: absolute
  cursor: pointer
答案

您可以尝试在SASS文件中使用转换和媒体查询,如下所示:

SASS代码:

$col-md: 768px;
$col-sm: 576px;  <--------------------------------------------add more of this
.scene-container {
  position:relative;
  width:991px;
  height:auto;
  margin:0 auto;
  @media screen and (max-width: $col-sm) {
     transform:scale(.6);   <---------------------------------addapt this value
  }
  @media screen and (min-width: $col-md) {    <---------------add more of this
     transform:scale(.8);   <---------------------------------and this value
  }
}

您可以添加更多媒体查询,它将使游戏更适合窗口。游戏不会全屏显示,每边都会有一个小空间,但它可以在任何设备上运行。您还必须调整变换比例。

以上是关于使游戏响应(适合不同的屏幕尺寸)的主要内容,如果未能解决你的问题,请参考以下文章

xcode ios - 如何使图像适合不同的屏幕尺寸

支持动态或静态片段的不同屏幕尺寸?

如何使背景图像适合所有屏幕尺寸?

如何使布局适合屏幕尺寸

使用 React 使 Web 应用程序完全适合屏幕

如何使 Altair 绘图响应