3

一直在玩 Storm Emulator 和 4.7 JDE,对于我来说,我无法弄清楚如何在模拟器中触发手势事件。

下面是 RIM 示例应用 EmbeddedMapDemo 的触摸事件代码。看起来很简单,但 touchGesture.getEvent() == TouchGesture.SWIPE 似乎永远不会注册为真。

如何在模拟器中注册滑动?用我的鼠标我尝试左键单击并拖动,但这似乎不起作用。

/**
* @see Field#touchEvent(TouchEvent)
*/
protected boolean touchEvent(TouchEvent message)
{        
    boolean isConsumed = false;

    if(_mapField.isClicked())
    {
        TouchGesture touchGesture = message.getGesture(); 
        if (touchGesture != null)
        {                
            // If the user has performed a swipe gesture we will 
            // move the map accordingly.
            if (touchGesture.getEvent() == TouchGesture.SWIPE)
            {      
                // Retrieve the swipe magnitude so we know how
                // far to move the map.
                int magnitude = touchGesture.getSwipeMagnitude();

                // Move the map in the direction of the swipe.
                switch(touchGesture.getSwipeDirection())
                {
                    case TouchGesture.SWIPE_NORTH:
                        _mapField.move(0, - magnitude);
                        break;
                    case TouchGesture.SWIPE_SOUTH:
                        _mapField.move(0, magnitude);
                        break;
                    case TouchGesture.SWIPE_EAST:
                        _mapField.move(- magnitude, 0);
                        break;
                    case TouchGesture.SWIPE_WEST:
                        _mapField.move(magnitude, 0);
                        break;                            
                } 
                // We've consumed the touch event.
                isConsumed = true; 
            }
        }     
    }
    return isConsumed;       
}
4

1 回答 1

4

按下鼠标左键模拟点击屏幕……当您点击屏幕时,模拟器(我认为也是一个实际的 Storm 设备)不会触发 TouchGesture 事件。

您要做的是按住鼠标右键并拖动,因为鼠标右键模拟屏幕点击,无需单击。这样,您应该能够触发 TouchGestures。

在模拟器上做手势有点困难,你必须快速移动,但如果你使用鼠标右键,你应该可以做到。

于 2009-07-23T20:44:07.023 回答