0

我开始与Spark AR 工作室合作,我正在寻找以像素为单位的屏幕尺寸来比较通过点击获得的坐标gesture.location

TouchGestures.onTap().subscribe((gesture) => {
  // ! The location is always specified in the screen coordinates
  Diagnostics.log(`Screen touch in pixel = { x:${gesture.location.x}, y: ${gesture.location.y} }`);

  // ????
});

gesture.location像素为单位(屏幕坐标),并希望将其与屏幕尺寸进行比较以确定屏幕的哪一侧被触摸。

也许使用Camera.focalPlane可能是个好主意...

更新

我尝试了两个新的东西来获得屏幕尺寸:

const CameraInfo = require('CameraInfo');
Diagnostics.log(CameraInfo.previewSize.height.pinLastValue());

const focalPlane = Scene.root.find('Camera').focalPlane;
Diagnostics.log(focalPlane.height.pinLastValue());

但两者都返回0

4

5 回答 5

2

最后,

使用补丁编辑器中的设备信息并将它们传递给脚本即可!

首先,在编辑器中添加一个变量“to script”:

在此处输入图像描述

然后,在补丁编辑器中创建它:

在此处输入图像描述

你可以用这个脚本抓住它:

const Patches = require('Patches');
const screenSize = Patches.getPoint2DValue('screenSize');

我的错误是用来Diagnostic.log()检查我的变量是否运行良好。

而是使用Diagnostic.watch()

Diagnostic.watch('screenSize.x', screenSize.x);
Diagnostic.watch('screenSize.y', screenSize.y);
于 2019-01-23T17:33:30.150 回答
2

这个答案可能有点晚了,但对于寻找可以在脚本中轻松使用值的解决方案的人来说,这可能是一个很好的补充,我遇到了这段代码(不是我的,忘记保存链接):

var screen_height = 0;
Scene.root.find('screenCanvas').bounds.height.monitor({fireOnInitialValue: true}).subscribe(function (height) {
    screen_height = height.newValue;
});
var screen_width = 0;
Scene.root.find('screenCanvas').bounds.width.monitor({fireOnInitialValue: true}).subscribe(function (width) {
    screen_width = width.newValue;
});

这对我来说效果很好,因为我不知道如何将 Diagnostics.log 与数据一起使用,而不是 Diagnostics.watch。

于 2019-09-17T14:25:25.990 回答
1

将屏幕大小从“场景”部分拖到补丁编辑器后,可通过“设备信息”补丁输出获得屏幕大小。 设备信息补丁

于 2019-01-22T01:09:38.457 回答
0

现在在公开测试版中(截至本文),您可以将设备从场景侧边栏拖到补丁编辑器中,以获得一个输出屏幕大小、屏幕比例和安全区域插入以及自身对象的补丁。 设备补丁

于 2019-10-15T14:54:59.557 回答
0

设备大小可以在脚本中分别使用CameraInfo.previewSize.widthCameraInfo.previewSize.height。例如,如果您想获得代表屏幕上最小/最大点的 2d 点,这可以解决问题。

const CameraInfo = require('CameraInfo')
const Reactive = require('Reactive')

const min = Reactive.point2d(
  Reactive.val(0),
  Reactive.val(0)
)
const max = Reactive.point2d(
  CameraInfo.previewSize.width,
  CameraInfo.previewSize.height
)

(我要强调的一点是CameraInfo.previewSize.widthandCameraInfo.previewSize.heightScalarSignals,而不是数字文字。)

编辑:这是文档的链接:https ://sparkar.facebook.com/ar-studio/learn/documentation/reference/classes/camerainfomodule

于 2020-02-02T07:09:22.520 回答