当前位置: 首页 > 知识库问答 >
问题:

旋转图像相对于箭头键反应js

鲁泰宁
2023-03-14

我是新来的反应js。我试图通过单击箭头键旋转图像。有人帮我,也分享一些学习反应js留档。

提前感谢。

我的代码

.js

import React from 'react';
import Ballimg from '../Image/ImageMovement.gif'
import Style from '../Style/ImageComponentStyle.module.css'

class Ball extends React.Component{
    constructor(props){
        super(props);
        this.handleKeyDown = this.handleKeyDown.bind(this)
        this.state = {
            imageDirection: Style.right
        };
    }
    handleKeyDown(e){
        if(e.KeyCode === 37){
            this.setState({imageDirection : Style.left})
        }
        else if(e.KeyCode === 38){
            this.setState({imageDirection : Style.up})
        }
        else if(e.KeyCode === 39){
            this.setState({imageDirection : Style.right})
        }
        else if(e.KeyCode === 40){
            this.setState({imageDirection : Style.down})
        }
    }
    render(){
        return(
            <div>
                <img src={Ballimg} alt="ball movement" className={this.state.imageDirection} onKeyDown={this.handleKeyDown}/>
            </div>
        );   
    }
}
export default Ball;

.module.css

.down {
    transform: rotate(90deg);
}
.left {
    transform: rotate(180deg);
}
.up {
    transform: rotate(-90deg);
}
.right{
    transform: rotate(0deg);
}

共有2个答案

公羊喜
2023-03-14

由于未使用公共类方法,因此可以按如下方式调用该方法:

onKeyDown={handleKeyDown}

绑定需要使用绑定方法。因此,如果您使用onKeyDown={this.handleKeyDown},您必须像这样绑定:

this.handleKeyDown = this.handleKeyDown.bind(this) // inside constructor

或者,使用公共类方法:

handleKeyDown = (e) => {}

关于更多细节,我建议你阅读我的另一个答案。

籍兴文
2023-03-14

首先,您有一个输入错误:

// Not e.KeyCode
e.keyCode === 37

然后,您可能希望为按键设置一个全局侦听器,或者该事件仅在元素聚焦时起作用:

window.addEventListener('keydown', e => { 
  //e.keyCode
});

完整示例:

const App = () => {
  const [direction, setDirection] = useState(0);

  useEffect(() => {
    window.addEventListener('keydown', e => {
      if (e.keyCode === 37) {
        setDirection(180);
      } else if (e.keyCode === 38) {
        setDirection(-90);
      } else if (e.keyCode === 39) {
        setDirection(0);
      } else if (e.keyCode === 40) {
        setDirection(90);
      }
    });
  }, []);

  return (
    <img
      style={{ transform: `rotate(${direction}deg)` }}
      alt="cat"
      src={image}
    />
  );
};

 类似资料:
  • 问题内容: 我有一个方法需要旋转,将其存储在新变量中,然后返回new 。这是我的尝试,图像似乎为空或什么。它只是不显示在屏幕上: 当我取出图像时,在屏幕上绘制的图像就很好,没有问题,但是当然没有旋转。 问题答案: 因此,基于此答案中的示例,您应该能够设计一种旋转方法,该方法可以将源图像旋转给定的度数,例如…

  • 我有一个方法,它需要旋转,将其存储在一个新变量中,然后返回新的。这是我的尝试,图像似乎是空的什么的。它只是不显示在屏幕上: 当我取出时,图像在屏幕上绘制得很好,没有任何问题,但当然没有旋转。

  • 我发现了一个非常有趣的问题。在拍摄相机照片后(我将设备保持在纵向模式,不旋转),给定的照片有时会旋转,但并不总是旋转。我知道,有些设备总是提供旋转的照片,但它可以使用exif或mediastore信息进行旋转。但在这种情况下,exif和mediastore表示方向为0,但图像是旋转的。最令人沮丧的是,这完全是随机发生的。代码非常简单: 有人见过这个问题吗?我在操作系统更新(4.1.1)后体验了Ga

  • 在我的应用程序中,用户从相机捕获图像或从图库中选择图像,然后将其转换为pdf并上载到服务器,现在我的问题是,从相机捕获的图像在某些设备上旋转,我有代码尝试解决此问题,但它不起作用 任何建议或问题在哪里,没有错误代码或任何东西

  • 问题内容: 我已经建立了一个具有单个文本输入的简单组件,并且在该列表的下方(使用语义ui)构建了一个组件。 现在,我想使用箭头键浏览列表。 首先,我必须选择第一个元素。但是,如何访问特定的列表元素? 其次,我将获取当前所选元素的信息并选择下一个元素。如何获取选择了哪个元素的信息? 选择将意味着将类添加到项目中,还是有更好的主意? 问题答案: 尝试这样的事情: 光标会跟踪您在列表中的位置,因此当用户

  • 问题内容: 我需要能够单独旋转图像(在Java中)。到目前为止,我发现的唯一东西是g2d.drawImage(image,affinetransform,ImageObserver)。不幸的是,我需要在特定点绘制图像,并且没有一种方法带有参数1.分别旋转图像和2.允许我设置x和y。任何帮助表示赞赏 问题答案: 这就是你可以做到的。这段代码假设存在一个名为“ image”的缓冲图像(如你的评论所说)