如何获取untiy鼠标按下的时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取untiy鼠标按下的时间相关的知识,希望对你有一定的参考价值。
参考技术A 、为maincamera添加guilayer(一般不用自己添加,在添加maincamera时会自动创建对应的guilayer)2、在脚本代码中读取对应的guilayer
3、检测鼠标或触摸屏单击事件,使用HitTest检测是否被点击
4、根据名称执行对应的函数
private GUILayer test.mousePosition).name);/获取主摄像机对应的guilayer void Update() if (Input;定义 void Start() test = Camera;/点击检测到guitexture Debug.Log(test.main.GetComponentGUILayer;();/.mousePosition) != null).HitTest(Input;///鼠标或触摸事件 if (test.HitTest(Input.touchCount ; 0 Input.GetMouseButtonDown(0)) 参考技术B 获取当前键盘按键,代码如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using UnityEngine;
using System.Collections;
public class GetCurrentKey : MonoBehaviour
KeyCode currentKey;
void Start ()
currentKey = KeyCode.Space;
void OnGUI()
if (Input.anyKeyDown)
Event e = Event.current;
if (e.isKey)
currentKey = e.keyCode;
Debug.Log("Current Key is : " + currentKey.ToString());
如何获取在 JavaFX 2 中按下的 Enter 键?
【中文标题】如何获取在 JavaFX 2 中按下的 Enter 键?【英文标题】:How do I pick up the Enter Key being pressed in JavaFX2? 【发布时间】:2012-12-02 13:41:02 【问题描述】:我有一个用于输入搜索词的 TextField 和一个用于“Go”的按钮。但是在 JavaFX2 中,我该如何让它在 TextField 中按 Enter 键来执行操作?
谢谢:)
【问题讨论】:
Javadoc 是解决此类问题的好来源:docs.oracle.com/javafx/2/api/javafx/scene/control/… Aaah Stack Overflow,俗话说:“授人以鱼,食一日,授人以渔,食一生。”但一个常见的 SO 回应更像是:“我说,好先生,有一个有书的地方,看看钓鱼,努力学习和练习,2 个月后你可以吃饭了。”好心,但没用。 【参考方案1】:我假设您希望仅在 TextField
具有焦点时用户按 Enter 键时发生这种情况。您需要使用 KeyEvent
包中的 KeyEvent
并执行以下操作:
field.setOnKeyPressed(new EventHandler<KeyEvent>()
@Override
public void handle(KeyEvent ke)
if (ke.getCode().equals(KeyCode.ENTER))
doSomething();
);
使用 lambda:
field.setOnKeyPressed( event ->
if( event.getCode() == KeyCode.ENTER )
doSomething();
);
【讨论】:
【参考方案2】:在某些键盘上,您必须对“\n”和“\r”字符进行额外测试。
if(event.getCode().equals(KeyCode.ENTER) || event.getCharacter().getBytes()[0] == '\n' || event.getCharacter().getBytes()[0] == '\r')
// your action
【讨论】:
【参考方案3】:只需使用 “lambda 表达式”:
TextField textField = new TextField();
textField.setOnAction(e ->
// add your code to be run here
System.out.println("textFile");
);
【讨论】:
【参考方案4】:这行得通:
@FXML public TextField txt;
@FXML
public void textAction(KeyEvent e)
if(e.getCode().equals(KeyCode.ENTER))
System.out.println(txt.getText());
如果由于某种原因 .getCode() 不起作用, 确保导入库:
import javafx.scene.input.KeyEvent;
不是
import java.awt.event.KeyEvent;
我被这件事吸引住了,这很烦人。我只是为所有在同一条船上的人传递这个。
【讨论】:
【参考方案5】:您可以使用 TextField 的 onAction 属性并将其绑定到控制器中的方法。
@FXML
public void onEnter(ActionEvent ae)
System.out.println("test") ;
在您的 FXML 文件中:
<TextField fx:id="textfield" layoutX="29.0" layoutY="298.0" onAction="#onEnter" prefWidth="121.0" />
【讨论】:
是的,onAction 方法似乎是要走的路:docs.oracle.com/javafx/2/api/javafx/scene/control/… -> +1 但是当从 FXML “绑定”时,你需要用 @FXML 注释 onEnter() 方法,它有采用 ActionEvent 参数,AFAIK。 请注意,我必须在onEnter
上添加 (ActionEvent actionEvent)
作为参数才能工作。【参考方案6】:
您可以尝试以下方法:
@FXML
public void buttonPressed(KeyEvent e)
if(e.getCode().toString().equals("ENTER"))
//do something
【讨论】:
更好用:ke.getCode() == KeyCode.ENTER
,因为它是一个枚举
单靠这个不行,这个的FXML是什么?以上是关于如何获取untiy鼠标按下的时间的主要内容,如果未能解决你的问题,请参考以下文章