【问题标题】:Processing - keep getting "The function sub(PVector, PVector) does not exist"处理 - 不断收到“函数子(PVector,PVector)不存在”
【发布时间】:2016-09-08 01:31:50
【问题描述】:

我正在尝试编写一个简单的“跟随鼠标”程序,但是下面的代码会抛出一个错误,指出静态 .sub() 方法不存在:

void update()
  {
    PVector mouse = new PVector(mouseX, mouseY);
    PVector direction = PVector.sub(mouse, location); // dir = mouse - location

    direction.normalise();
    direction.multiply(0.4);

    acceleration = direction;

    velocity.add(acceleration);
    velocity.limit(maxVelocity);
    location.add(velocity);
  }

我自己定义了一些方法(方法重载?),因此为什么我们有 'multiply' 而不是 'mult' 等等,但我不明白为什么它告诉我 .sub() 没有'不存在,当它是clearly there in the documentation。我也有其他一些方法。

我需要定义自己的静态 .sub() 吗?你甚至可以在处理中做到这一点吗?

提前致谢。

【问题讨论】:

  • 你能发布你的自定义鼠标追逐类吗? (不清楚你如何使用PVector:party 看起来像使用组合,但部分扩展了类,但使用与超类相同的名称,这可能与它有关)

标签: processing


【解决方案1】:

说您自己定义了一些方法并没有多大意义。您是使用 Processing 中的 PVector 类,还是使用您自己的 PVector 类?

如果您使用自己的PVector 类,那么您要么必须定义自己的sub() 函数,要么可以使用Processing 的PVector完全限定名,像这样:

processing.core.PVector x = processing.core.PVector.sub(y, z);

当然,这也会返回一个处理中的PVector,而不是你的PVector

我不确定为什么需要定义自己的 PVector 类,或者为什么需要定义自己的 PVector 方法。那里有声音。

如果这不能解决您的问题,请编辑您的问题以包含 MCVE,包括您自己定义的任何这些方法,以及您如何定义它们。

【讨论】:

  • 我在使用自己的 PVector 类,主要是作为学习工具来适应 Processing 中的向量操作。我发现从项目文件夹中删除我的 PVector 类解决了我的问题,所以我现在可能只是这样做。只是一个简单的问题-“完全限定名称”是什么意思?它是如何工作的?
  • @LouisCowell 请在我的回答中查看示例代码。看到processing.core.PVector 部分了吗?这是完全限定名称,谷歌搜索“Java 完全限定名称”之类的内容将为您提供更多信息。无论如何,如果您出于某种原因要拥有自己的 PVector 类,至少将其命名为不同的名称,以免干扰现有的 PVector 类!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多