TVEventHandler在Android TV上找不到。

3
我正在尝试构建一个适用于Android电视的应用程序,并希望使用遥控器动作。我首先检查是否有可帮助我的包,但我找不到一个。

然后我转向官方文档,链接在这里

我正在尝试使用以下代码:

var TVEventHandler = require('TVEventHandler');

class Game2048 extends React.Component {
  _tvEventHandler: any;

  _enableTVEventHandler() {
    this._tvEventHandler = new TVEventHandler();
    this._tvEventHandler.enable(this, function(cmp, evt) {
      if (evt && evt.eventType === 'right') {
        cmp.setState({board: cmp.state.board.move(2)});
      } else if(evt && evt.eventType === 'up') {
        cmp.setState({board: cmp.state.board.move(1)});
      } else if(evt && evt.eventType === 'left') {
        cmp.setState({board: cmp.state.board.move(0)});
      } else if(evt && evt.eventType === 'down') {
        cmp.setState({board: cmp.state.board.move(3)});
      } else if(evt && evt.eventType === 'playPause') {
        cmp.restartGame();
      }
    });
  }

  _disableTVEventHandler() {
    if (this._tvEventHandler) {
      this._tvEventHandler.disable();
      delete this._tvEventHandler;
    }
  }

  componentDidMount() {
    this._enableTVEventHandler();
  }

  componentWillUnmount() {
    this._disableTVEventHandler();
  }

但是var TVEventHandler = require('TVEventHandler');提示找不到名为TVEventHandler的模块。我尝试手动从react-native/Libraries/Components/AppleTV导入它,但是出现了一个错误,指出该组件可能没有被导出。我不确定我在这里做错了什么。我按照文档要求做了一切。


可能相关:https://dev59.com/N67la4cB1Zd3GeqPbloG#52358979 - Morrison Chang
我不认为那是问题所在。如果是的话,我该如何解决? - Mohamed Ahmed
我引用了你的话,因为你没有说明你使用的React-Native/node/yarn版本,但是通过查看你的历史记录,看起来你已经取得了进展,所以我有点困惑。此外,TVEventHanderExample在Android TV上是否可用? - Morrison Chang
抱歉,我刚刚解决了这个问题。不过,是 https://dev59.com/N67la4cB1Zd3GeqPbloG#57971978 解决了它。这是你指向的同一个问题,但是答案不同。你能否将其发布为答案,以便我可以接受为最佳答案? - Mohamed Ahmed
1
回答自己的问题(允许这样做)。很棒,你已经解决了它。我只是想为其他人获取更多细节。 - Morrison Chang
1个回答

2

问题已解决。请在您的类中使用此代码,并确保从 react-native 导入 TVEventHandler:

_tvEventHandler: any;


_enableTVEventHandler() {
        var self = this;
        this._tvEventHandler = new TVEventHandler();
        this._tvEventHandler.enable(this, function (cmp, evt) {
            console.log("kcubsj"+evt.eventType)
            if (evt && evt.eventType === 'right') {
                console.log('right');
            } else if (evt && evt.eventType === 'up') {
                console.log('up');
            } else if (evt && evt.eventType === 'left') {
                console.log('left');
            } else if (evt && evt.eventType === 'down') {
                console.log('down');
            } else if (evt && evt.eventType === 'select') {
                //self.press();
            }
        });
    }

_disableTVEventHandler() {
        if (this._tvEventHandler) {
            this._tvEventHandler.disable();
            delete this._tvEventHandler;
        }
    }

 componentDidMount() {
        this._enableTVEventHandler();
    }

componentWillUnmount() {
        this._disableTVEventHandler();
    }

Original Answer


我正在使用RN版本0.70.6,TypeError:无法读取未定义的属性'prototype'。 - Ajith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接