我们目前有每个接触点的位置属性。
事件程序是:
procedure TForm1.FormTouch(Sender: TObject; const Touches: TTouches;
const Action: TTouchAction);
动作与每次触摸无关,仅检测是否触摸。
如果我们想要完全控制每个触摸点,我们需要另一个属性作为TTouchAction。
类似的东西:
TTouch = record
Location: TPointF;
Action: TTouchAction;
end;
原始声明(FMX.Types)是:
TTouch = record
Location: TPointF;
end;
有没有人知道任何解决方法?
我使用Delphi XE7。
更新:修复!!
将fmx.platform.android添加到“使用”。
我对fmx.platform.android进行了以下更改:
var
ACTION_Touches: array of Integer;
//Function Modded
function TPlatformAndroid.HandleAndroidMotionEvent(AEvent: PAInputEvent): Int32;
var
I: Integer;
MotionEvent: TMotionEvent;
begin
Result := 0;
FMotionEvents.Clear;
SetLength(ACTION_touches, 1);
for I := 0 to AMotionEvent_getPointerCount(AEvent) - 1 do
begin
MotionEvent.EventAction := AKeyEvent_getAction(AEvent) and AMOTION_EVENT_ACTION_MASK;
MotionEvent.Position := TWindowManager.Current.PixelToPoint(TPointF.Create(AMotionEvent_getX(AEvent, I),
AMotionEvent_getY(AEvent, I)));
MotionEvent.Shift :=[ssLeft];
if AInputEvent_getType(AEvent) <> AINPUT_SOURCE_MOUSE then
Include(MotionEvent.Shift, ssTouch);
FMotionEvents.Add(MotionEvent);
ACTION_touches[0] := (AKeyEvent_getAction(AEvent) and AMOTION_EVENT_ACTION_PointerIndex_MASK) shr AMOTION_EVENT_ACTION_PointerIndex_SHIFT;
end;
HandleMultiTouch;
if (FActiveInteractiveGestures = []) or (FActiveInteractiveGestures = [TInteractiveGesture.Pan]) then
ProcessAndroidMouseEvents;
ProcessAndroidGestureEvents;
end;