我正在开发酷幻想世界的在线地图(如谷歌地图).我也在我的主计算机上使用OS X. 由于OS X(尤其是Lion)专注于不同的多点触控手势,因为几乎所有mac用户都有一个多点触控输入设备(魔术鼠标或触控板)我想在我的在线地图上添加捏手势支持(双指)滚动也很酷添加).有可能吗?如果它只能在某些特定的浏览器或Web引擎中运行,那也不错.
在某些多点触控"屏幕绘图"代码的维护中,我遇到了一个错误,相对于如何在touchesBegan:withEvent:,touchesMoved:withEvent:和touchesEnded:withEvent:之间设置触摸实例的引用.
代码使用NSDictionary实例来存储touchesBegan:withEvent:中的touches引用,如下所示:
for (UITouch *touch in touches]) {
NSValue *touchValue = [NSValue valueWithPointer:touch];
NSString *key = [NSString stringWithFormat:@"%@", touchValue];
[myTouches setValue:squiggle forKey:key];
}
Run Code Online (Sandbox Code Playgroud)
并以touchesEnded:withEvent检索它们:这样:
for (UITouch *touch in touches) {
NSValue *touchValue = [NSValue valueWithPointer:touch];
NSString *key = [NSString stringWithFormat:@"%@", touchValue];
NSObject *valueFromDictionary = [myTouches valueForKey:key];
[myTouches removeObjectForKey:key];
}
Run Code Online (Sandbox Code Playgroud)
在最后一段代码中,valueFromDictionary偶尔会出现nil,因为字典不知道密钥.偶尔,我的意思是大约1%的时间.
现在上下文已经确定,我的问题是:
知道为什么这个代码有问题吗?我不确定它为什么不起作用,特别是因为错误的频率非常低
来自Apple的一些文档指出,使用UITouch对象的地址作为键是个好主意:但它意味着使用NSValue*对象而不是NSString*对象(因此使用CFDictionaryRef而不是NSDictionary,因为UITouch没有实现复制协议).为了能够使用NSDictionary,如何存储地址的NSString表示而不是NSValue本身是不是一个简单的解决方案? 更新:Apple更新了页面并删除了通过NSString存储UITouch的示例,并且只提到了非对象的CFDictionaryRef解决方案.
我担心我离C和指针很远,需要帮助才能理解这段代码中存在错误的原因.
在Android上,可以通过http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_TOUCHSCREEN_MULTITOUCH以编程方式检查设备是否支持多点触控.
是否也可以准确检查设备在多点触控中可识别的手指数量?例如,据我所知,从2.x开始支持双指多点触控,但从4.0开始支持3指多点触控.但是我们的客户报告说有一些带有4.x的新设备仍然不支持3个手指,这使得对Android操作系统版本的简单检查毫无用处.
一种可能的解决方案是在每个设备的某些字典中存储它支持的手指数量最多,但是有1k +设备在那里,而新的设备不断出现它是不可行的.
有解决方案吗
编辑:事实上我刚刚发现客户报告的问题是HTC One系列的设备问题.请参阅http://www.mobiflip.de/htc-one-serie-multitouch-beschraenkung-aufheben-tipp/用户必须在设置中关闭特定于设备的手势识别才能使5个手指正常工作.因此,该设备甚至可能显示5个以上的手指支持.我想我们只会检查设备的型号并显示特殊的弹出窗口,告诉用户关闭HTC特定的设置.
我有一个传统的swing应用程序,我需要添加触摸手势,特别是捏缩放,触摸和拖动.
我尝试了JDK 8的SwingNode,我可以在那里运行swing应用程序,但是显示性能降低了50%以上,这是行不通的.MT4J中的SwingTextureRenderer具有相同的问题,甚至没有尝试将触摸事件重新发送为鼠标事件.
我想到了一个玻璃窗格方法,在顶部使用JavaFX层并捕获触摸事件并尝试将它们作为鼠标事件发送到下面的Swing应用程序.
有没有人有替代方法?目标平台是Windows 8.
一旦Stackoverflow打开它,Bounty即将到来.我很快就需要这个.
编辑:
这是我尝试使用SwingNode(鼠标redispatch不起作用).SwingNode的东西可能会分散对最佳解决方案的注意力,所以如果你有更好的想法来触摸它,请忽略它:
@Override
public void start(Stage stage) {
final SwingNode swingNode = new SwingNode();
createAndSetSwingContent(swingNode);
StackPane pane = new StackPane();
pane.getChildren().add(swingNode);
stage.setScene(new Scene(pane, 640, 480));
stage.show();
}
private void createAndSetSwingContent(final SwingNode swingNode) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
UILib.setPlatformLookAndFeel();
// create GraphViewTouch
String datafile = null;
String label = "label";
final JPanel frame = GraphView.demoFrameless(datafile, label);
swingNode.setContent(frame);
swingNode.setOnZoom(new EventHandler<ZoomEvent>() {
@Override public void handle(ZoomEvent event) {
MouseWheelEvent me = new …Run Code Online (Sandbox Code Playgroud) 我有一个多点触摸的显示器.可以在桌面系统上的libgdx中处理多点触控(win7,osx ......)?
所以我正在开发一个必须处理多点触控的应用程序.基本上我想要单点旋转(这没问题).用于滚动的多点触控.
我有基本的代码,但是当从单一触摸转换到多点触控和副verca时,我遇到了问题.基本上,由于多点触控(两个手指)的中间位置和单个手指的绝对位置处于一定距离,因此运动将摇晃.因此,如果我在屏幕上有两个手指,它们构成一个中间位置,然后抬起一根手指,这就像从中间位置到绝对单指位置的快速移动.这将是我不想要的运动.
这是我的代码:
@Override
public boolean onTouchEvent( MotionEvent event ) {
float xEvent[] = new float[ 2 ];
float yEvent[] = new float[ 2 ];
switch( event.getPointerCount() ) {
case 1:
xEvent[ 0 ] = event.getX( 0 );
yEvent[ 0 ] = event.getY( 0 );
switch( event.getAction() ) {
case MotionEvent.ACTION_DOWN:
camera.onTouchDown( xEvent[ 0 ], yEvent[ 0 ] );
return true;
case MotionEvent.ACTION_MOVE:
camera.onTouchRotate( xEvent[ 0 ], yEvent[ 0 ] );
return true;
default: return super.onTouchEvent( event );
}
case …Run Code Online (Sandbox Code Playgroud) 我正在编写一个只使用本机代码的应用程序.
那么有可能在ndk中获得多点触控事件吗?
我觉得我已经整个网络,但没有找到任何东西!
有谁知道如何做到这一点?
java-native-interface events android multi-touch android-ndk
好吧所以我一直在尝试为我的libgdx游戏实现多点触控解决方案并遇到一些麻烦.基本上,我在控制我的性格,并在屏幕的remaing部分要处理刷卡才能有人物跳跃,打孔或者在敌人扔东西方向在屏幕的左下方象限DPAD.我最初考虑过在GestureListener中使用fling但是我已经被告知多点触控不支持fling并且从那时起开始使用pan来检测滑动.我目前遇到的问题是,如果我在屏幕上用手指在使用刷卡(玩家移动,并试图跳),通过平移停止指针似乎是对我的记录和理解不正确的(至少巴斯(无论如何)这里的代码是下面的代码和手势检测器上的文档的链接,如果有人可以帮助解释发生了什么将非常感激.
@Override
public boolean touchDown(float x, float y, int pointer, int button) {
if (x < width / 3 && y > height / 2) {
directionPointer= pointer;
if(x< width/6){
controller.leftPressed();
message=" driection TOUCH DOWN POINTER IS: " + pointer + "the action pointer -> " +actionPointer +"directionPointer->"+ directionPointer;
Gdx.app.log("INFO", message);
return true;
}else{oller.rightPressed();
message=" direction TOUCH DOWN POINTER IS: " + pointer + "the action pointer -> " +actionPointer +"directionPointer->"+ directionPointer;
Gdx.app.log("INFO", message);
return true; …Run Code Online (Sandbox Code Playgroud) 任何好友都有自定义文本视图,包括旋转,放大,缩小和移动功能,如MutiTouch Image View,如http://judepereira.com/blog/multi-touch-in-android-translate-scale-and-rotate/ in的android?我想完全喜欢这个屏幕截图.1.在该屏幕中绘制简单文本.2.在该屏幕中,我缩放此视图文本自动换行.3.在该屏幕中,在视图上移动文本.4.在该屏幕中旋转文本.这一切功能都在TextView touch上完成.




使用Zoom by Jackmoore:http ://www.jacklmoore.com/zoom/ https://github.com/jackmoore/zoom
我想在触摸设备上使用双击来切换缩放效果.原因是我正在使用的旋转木马(OWL Carousel)用于图像也具有滑动功能,并且通过触摸和拖动图像在触摸设备上进行缩放,这与滑动冲突.
就像topman网站为移动设备做的那样:http://www.topman.com/en/tmuk/product/clothing-140502/mens-blazers-5369753/black-textured-slim-fit-tuxedo-jacket-5390835? bi = 0&PS = 20
这是JS文件的链接:https://github.com/jackmoore/zoom/blob/master/jquery.zoom.js
我可以通过双击非触摸设备来实现这一点:
if (settings.on === 'toggle') {
$source.on('dblclick.zoom',
function (e) {
if (clicked) {
stop();
} else {
start(e);
}
clicked = !clicked;
}
);
Run Code Online (Sandbox Code Playgroud)
但需要调整触摸设置的代码,我相信改变这一部分:
// Touch fallback
if (settings.touch) {
$source
.on('touchstart.zoom', function (e) {
e.preventDefault();
if (touched) {
touched = false;
stop();
} else {
touched = true;
start( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );
}
})
.on('touchmove.zoom', …Run Code Online (Sandbox Code Playgroud)