【问题标题】:How to tell if a button was pressed in a different key-frame?如何判断按钮是否在不同的关键帧中被按下?
【发布时间】:2016-01-03 10:16:27
【问题描述】:

我是 Flash 开发的新手,我正在尝试让当我在游戏中按下模式按钮时,它会改变障碍物的速度。问题是障碍物位于不同的关键帧中,而速度代码位于影片剪辑本身中。它如何告诉不同关键帧中的障碍物它们的速度应该是多少??

【问题讨论】:

    标签: flash button actionscript-2 movieclip


    【解决方案1】:

    当用户单击模式按钮时,您需要设置一个变量。

        var speed:Number = 5;
    
        modeButton.onRelease = function() {
            speed = 10;
        }
    

    然后稍后为您的障碍引用该变量...

        trace("speed: " + speed);
    

    这是一个超级简单的例子,希望对你有帮助!

    【讨论】:

    • 问题标记为 AS2
    • 他还指定代码在关键帧内,但您使用特定于类的标识符。此外,在影片剪辑中声明的变量不是“全局的”。可以用于此目的的范围,是的。但不是“全球”。您的逻辑有效,但该代码对他根本不起作用。
    • 很公平 - 我错过了 AS2 标签。我会更新以反映您的观点。
    【解决方案2】:

    在动画剪辑中声明的变量在定义后的任何帧中都可以使用(即使当它循环回到第 1 帧时,它们仍然可用,即使它们没有在第 1 帧中声明,但最好做法是在第一帧中声明)。

    所以基本上......你的问题不应该真的存在。只需将您的数据存储在第 1 帧上声明的变量中。存在问题的唯一方法是,如果您仅在函数本身中有该变量,因此它仅对该函数是本地的......这将是一个问题,无论电影剪辑和关键帧。

    只是不要那样做。在函数外声明变量,在函数内使用。

    // put this on frame 1
    var speed = 1; // this will be accessible anywhere in the clip
    
    // put this wherever your button appears (I assume on frame 1 as well)
    yourBtnName.onRelease = function() {
        speed = 1.5; // the change will be refleced anywhere that uses it
    }
    
    // put this on some other frame and call it at any point
    function doSomething() {
        trace(speed); // before clicking the button this will trace 1, after 1.5
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2010-10-22
      • 1970-01-01
      • 2019-09-07
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多