如何在urho 3d视图中实现拖放?

问题描述 投票:0回答:1

我已经使用urhosharp为我的xamarin uwp / ios / android项目添加了3d视图对象。唯一有效的事件是触摸事件,但我也想使用拖放操作,以便对象可以移动到3D视图中的不同位置。有什么建议?

https://us.v-cdn.net/5019960/uploads/editor/ni/u16pg79v2m62.png

xamarin.forms xamarin.uwp urhosharp urho3d
1个回答
0
投票

还没有使用过urhosharp,但这里有一些关于使用拖放的建议,不确定它是否对你有帮助。

urhosharp:gasxswpoi

从urhosharp的文档中,有一些基本的动作解释,但没有拖放。也许你可以通过在每个平台上组合动作和拖动方法来做到这一点。但这需要你尝试。


UWP:Basic Actions

以下概述了在应用中启用拖放操作所需执行的操作:

  1. 通过将其CanDrag属性设置为true来启用对元素的拖动。
  2. 构建数据包。系统自动处理图像和文本,但对于其他内容,您需要处理DragStarted和DragCompleted事件并使用它们构建自己的数据包。
  3. 通过在可以接收已删除内容的所有元素上将AllowDrop属性设置为true来启用删除。
  4. 处理DragOver事件以让系统​​知道元素可以接收的拖动操作类型。
  5. 处理Drop事件以接收已删除的内容。

代码示例:

reference link here

IOS:<Grid AllowDrop="True" DragOver="Grid_DragOver" Drop="Grid_Drop" Background="LightBlue" Margin="10,10,10,353"> <TextBlock>Drop anywhere in the blue area</TextBlock> </Grid> private void Grid_DragOver(object sender, DragEventArgs e) { e.AcceptedOperation = DataPackageOperation.Copy; }

通过iOS中的拖放,用户可以使用连续手势将项目从一个屏幕位置拖动到另一个位置。拖放活动可以在单个应用程序中进行,也可以在一个应用程序中启动,在另一个应用程序中结束。

  1. 使用拖动项目在源应用程序和目标应用程序之间传达数据表示承诺。
  2. 采用拖动交互API来提供拖动项。
  3. 采用drop interaction API来选择性地使用拖动的内容。
  4. 演示如何为UIImageView实例启用拖放操作。

代码示例:

reference link here

这是Xamarin IOS的​​func customEnableDragging(on view: UIView, dragInteractionDelegate: UIDragInteractionDelegate) { let dragInteraction = UIDragInteraction(delegate: dragInteractionDelegate) view.addInteraction(dragInteraction) } func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] { // Cast to NSString is required for NSItemProviderWriting support. let stringItemProvider = NSItemProvider(object: "Hello World" as NSString) return [ UIDragItem(itemProvider: stringItemProvider) ] }

或者你可以在IOS中使用UIPanGestureRecognizer移动视图。这里是sample你需要做的就是让view.center跟随panGesture改变。


Android:Walkthrough: Using Touch in Xamarin.iOS.

使用Android拖放框架,您可以允许用户使用图形拖放手势将数据从一个视图移动到另一个视图。该框架包括拖动事件类,拖动侦听器以及辅助方法和类。

拖放过程中基本上有四个步骤或状态:

  1. 开始:响应用户开始拖动的手势,应用程序调用startDrag()告诉系统开始拖动。
  2. 继续:用户继续拖动。
  3. 已删除:用户在可以接受数据的视图的边界框内释放拖动阴影。
  4. 结束:用户释放拖动阴影后,在系统发出(如果需要)具有操作类型ACTION_DROP的拖动事件后,系统会发出一个操作类型为ACTION_DRAG_ENDED的拖动事件,以指示拖动操作已结束。

表。 reference link here行动类型:DragEvent

或者在Android中可以使用onTouchEvent来移动视图,需要计算view.enter image description here的位置

主要是处理按下和移动两个消息,重载onTouchEvent。数学知识(翻译):在ACTION_DOWN时记录坐标点,并根据ACTION_MOVE时按下的当前位置和位置计算平移量。刷新控件,使控件重绘,并在重绘时移动图形左上角的坐标。


这里也有关于Walkthrough - Using Touch in Android的讨论。它可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.