【问题标题】:Variables in cloned Scratch sprites - global or local?克隆的 Scratch 精灵中的变量 - 全局还是本地?
【发布时间】:2017-01-06 04:43:34
【问题描述】:

我在 Scratch 中创建了一个飘落的雪花背景,偶然发现了以下代码:

然后我阅读了关于克隆精灵的 wiki,并被这句话难住了:

所有精灵的变量对于每个克隆都是相同的,但只有这个精灵的变量对于每个克隆都是不同的。

问题:

在我的点击块中,我创建了自己的克隆。克隆和 单击时块 共享变量 y pos,但它们似乎独立运行(因此在 oops 术语中)“this”类型的变量,即单独的仅为克隆对象实例化的变量。我不能用勾号显示它,所以我假设它是克隆本地的?

或者 y pos 是全局的(类变量)?我猜是后者,但上面的句子没有帮助。

【问题讨论】:

  • Scratch 的 y 轴是从 -180 到 180,而不是 -360 到 360 btw。
  • 就是让动画变慢
  • 我自己发现了这一点,但动画在中途而不是屏幕底部停止 - 试试看!

标签: mit-scratch


【解决方案1】:

Scratch 中的局部变量也是每个克隆中的单独实例。全局变量只存在一次,对所有对象都相同。 Scratch 没有类变量,可以在同一对象的克隆之间共享。

【讨论】:

    【解决方案2】:

    为了使其正常工作,变量 ypos 必须是本地的(仅限此 Sprite),否则两者会相互干扰。

    【讨论】:

    • 这就是我通过使用“say statements”发现的,我认为它是本地的。我发现有影响克隆和非影响克隆。猜猜别人代码中cmets的原因在Scratch中非常重要,否则你会摸不着头脑。
    【解决方案3】:

    可变的可访问性将根据您创建它的方式而有所不同。当您在变量菜单中创建变量时(即您选择名称的位置),它会询问您是否希望“所有精灵”或“仅此一个”可以访问该变量。如果您选择“所有精灵”,该变量将被创建为全局变量,并且所有精灵都可以访问(并且可以更改)。如果您选择“仅此一个”,则应该创建一个局部变量,并且只能由每个精灵单独访问。


    希望我能帮上忙。 -GreenHawk1220

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多