我在PyGame开发一款简单的游戏......一架飞来飞去的火箭飞船.
问题:为什么pygame会在同时按下键时停止发出键盘事件?
关于密钥处理:该程序有许多变量,如KEYSTATE_FIRE, KEYSTATE_TURNLEFT等...
KEYDOWN事件被处理时,它设置对应的KEYSTATE_*变量为True.KEYUP事件被处理,它设置相同的变量设置为false.问题:
如果UP-ARROW和LEFT-ARROW同时按下,pygame KEYDOWN在SPACE按下时不会发出事件.此行为因密钥而异.当按下字母时,似乎在pygame停止发出KEYDOWN附加键的事件之前,我可以容纳其中的大约5个.
验证:在我的主循环中,我只是打印收到的每个事件以验证上述行为.
代码:作为参考,这里是处理关键事件的(粗略)方式:
while GAME_RUNNING:
FRAME_NUMBER += 1
CLOCK.tick(FRAME_PER_SECOND)
#----------------------------------------------------------------------
# Check for events
for event in pygame.event.get():
print event
if event.type == pygame.QUIT:
raise SystemExit()
elif event.type == pygame.KEYDOWN and event.dict['key'] == pygame.K_UP:
KEYSTATE_FORWARD = True
elif event.type == pygame.KEYUP and event.dict['key'] == pygame.K_UP:
KEYSTATE_FORWARD = False
elif …Run Code Online (Sandbox Code Playgroud) 我有一个带有两个文本框的WPF视图.当用户像Tab一样击中键盘上的向下箭头时,我想自动将焦点从第一个文本框向前移动到第二个文本框.
似乎我应该能够100%声明地执行此操作,但出于某种原因,我认为这样做的命令似乎没有做任何事情.这是我的第一次尝试不起作用:
<StackPanel>
<TextBox Text="Test">
<TextBox.InputBindings>
<!-- I realize ComponentCommands.MoveFocusDown doesn't work...
This is just an example of what I've tried and the type
of answer I'm looking for -->
<KeyBinding Key="Down" Command="ComponentCommands.MoveFocusDown" />
</TextBox.InputBindings>
</TextBox>
<TextBox></TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
有人对这个有经验么?好像我应该能够使用InputBindings或EventTrigger来做到这一点.
我正在使用MVVM,这是一个View问题.我可以放弃一点代码隐藏(作为一个视图关注,这是合理的),但它只是感觉我错过了一些东西.
我有一个带有登录页面的应用程序,该页面包含三个不同随机字符的字段.当用户离开最后一个字段时,软键盘消失,用户可以触摸屏幕上的"登录"按钮.
当连接了硬件键盘(蓝牙或物理)时,我希望能够点击"输入".但是因为用户不在某个字段中,所以我看不到如何检测被按下的键.
有人会就哪个班级处理重要新闻事件提出建议吗?据推测,我可以使用一个代表来接收这些代理但我通过SDK搜索没有找到任何内容.
谢谢
click当按下某个键盘按钮时,如何调用链接事件?
我想在+/+ 上调用下一页/上一页Ctrl →Ctrl←
这个问题与我最近在这里提出的另一个问题有关,但更具体地说明我需要什么,而不是我的上一个问题,因为前一个问题我不确定如何解释甚至我想做什么.
我有一个我正在构建的自定义控件,它看起来(并且最终会起作用)类似于Windows的任务栏的工作方式.它在最左侧有一个主菜单按钮,并在控件内部设置了动态数量的其他按钮.它可以被视为某种列表控件,只需一个额外的按钮(菜单).菜单按钮我认为索引为-1,第一个动态按钮的索引为0.
说实话,我面临的问题有三个(如下所示),而这些问题都是因为我从来没有写过这个先进的控件.
我以为我会问所有3个问题,因为它们都与我在下面发布的同一个单元有关...
组件TJDTaskbar
unit JDTaskbar;
interface
uses
Classes, Windows, SysUtils, Controls, StdCtrls, ExtCtrls, StrUtils,
Graphics, Forms, Messages;
type
TJDTaskbar = class;
TJDTaskbarItem = class;
TJDTaskbarItems = class;
TJDTaskHandle = Integer; //Future use
TFocusIndex = -1..MaxInt; //Range of possible indexes in list
//Mimics the Windows taskbar for managing forms in an application
//Main component
TJDTaskbar = class(TCustomControl)
private
FButtonColor: TColor;
FItems: TJDTaskbarItems;
FButtonHover: TColor;
FButtonWidth: Integer;
FButtonText: TCaption;
FButtonCaption: TCaption; …Run Code Online (Sandbox Code Playgroud) 嗨我有下面的代码,我的输入事件永远不会触发,任何帮助将不胜感激.
items: [{
xtype: 'textfield',
id: 'idhere',
name: 'namehere',
fieldLabel: 'lablehere:',
width: 500,
handler: {
key:13,
fn : function () {
if (e.getKey() == e.ENTER) {
alert("You pressed an enter button in text field.");
}
}
}
},{
xtype: 'button',
text: 'texttodisplay',
handler: function() {
//my function.
}
}]
Run Code Online (Sandbox Code Playgroud)
我实际上通过使用:
listeners: {
specialkey: function (f,e) {
if (e.getKey() == e.ENTER) {
loadData();
}
}
}
Run Code Online (Sandbox Code Playgroud) 在我的C#/ WPF/.NET 4.5应用程序中,我试图通过KeyEventHandler捕获按键,然后使用优秀的Windows输入模拟器来模拟按键(将手势,语音等命令映射到键盘).
麻烦的是,我得到的成员Key枚举从KeyEventHandler的RoutedEventArgs,但后来我需要通过一个VirtualKeyCode到SimulateKeyPress().
如何从去Key到VirtualKeyCode?
// Trigger reader
private void Editor_CommandButton_Click(object sender, RoutedEventArgs e) {
PressKeyModal.Visibility = System.Windows.Visibility.Visible;
AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)Editor_HandleKeyDownEvent);
}
// Read key press from keyboard
private void Editor_HandleKeyDownEvent(object sender, KeyEventArgs e) {
// Here is the culprit
VirtualKeyCode CodeOfKeyToEmulate = ConvertSomehow(e.Key);
// /culprit
PressKeyModal.Visibility = System.Windows.Visibility.Hidden;
RemoveHandler(Keyboard.KeyDownEvent, (KeyEventHandler)Editor_HandleKeyDownEvent);
}
// Later, emulate the key press
private void EmulateKeyPress(VirtualKeyCode codeOfKeyToEmulate( {
InputSimulator.SimulateKeyPress(codeOfKeyToEmulate);
}
Run Code Online (Sandbox Code Playgroud) 在Haskell中编写程序,我正在努力处理ctrl-s和ctrl-l形式的按键操作
我使用以下代码:
main :: IO ()
main = do
hSetBuffering stdin NoBuffering
x <- getChar
putStrLn ("You pressed: " ++ [x])
Run Code Online (Sandbox Code Playgroud)
如何识别按下的Ctrl按钮?
我正在尝试使用spriteKit构建动画,并且可以通过键盘进行控制(箭头键可以加快,减速和倒带动画)。
我还需要此应用程序具有完全透明的背景,这是我使用以下方法管理的:
scene?.backgroundColor = NSColor.clearColor()
Run Code Online (Sandbox Code Playgroud)
以及 :
self.window.opaque = false
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切正常,我可以控制动画。但是,一旦我尝试通过取消选中右侧面板上的窗口框来删除Interface Builder中的标题栏,键盘捕获就会停止工作。
keyDown:不再被调用,当您的Mac告诉您键盘输入不再是一种选择时,我得到了“叮当”的声音特征。即使我在菜单栏中仍然有我的应用程序的名称。
标题关闭时,还有什么方法可以继续接收键盘输入?
我被要求为我们的页面网站实现ctrl + mousewheel事件,以便在用户放大或缩小时更改图像偏移.我发现这个旧答案使用javascript覆盖浏览器CTRL +(WHEEL)SCROLL,我试图做同样的事情.我为实现下载了jQuery Mouse Wheel插件,这是我的代码:
var isCtrl = false;
$(document).on('keydown keyup', function(e) {
if (e.which === 17) {
isCtrl = e.type === 'keydown' ? true : false;
}
}).on('mousewheel', function(e, delta) { // `delta` will be the distance that the page would have scrolled;
// might be useful for increasing the SVG size, might not
if (isCtrl) {
e.preventDefault();
alert('wheel');
}
});
Run Code Online (Sandbox Code Playgroud)
事件可以单独运行,但如果我按住CTRL按钮并转动鼠标,则轮子事件不会触发.有没有人有更好的解决方案,或者我做错了什么?感谢帮助
keyboard-events ×10
focus ×2
javascript ×2
jquery ×2
wpf ×2
.net-4.5 ×1
c# ×1
cocoa ×1
delphi ×1
delphi-7 ×1
enter ×1
extjs ×1
haskell ×1
ios ×1
iphone ×1
keyboard ×1
macos ×1
mouseevent ×1
objective-c ×1
pygame ×1
python ×1
sprite-kit ×1
swift ×1
xaml ×1