【问题标题】:How to use a single script for multiple frames如何将单个脚本用于多个帧
【发布时间】:2016-08-19 04:07:00
【问题描述】:

我在 Flash 中构建了一个由 50 个状态组成的拓扑训练器。 对于每个州,我都制作了一个框架。这 50 帧的代码应该是相同的,而图形延迟。如果我将代码放在 50 帧中的第一帧上,它只能在那里工作。如果我把代码放在每一帧我会得到很多错误,因为所有的功能都加倍了。

有没有办法让所有 52 帧都运行相同的代码?

感谢您的宝贵时间,

更多信息:

红色方块表示 50 个州。那是纯粹的图形。 我为所有编码制作了一个单独的层。 蓝色圆圈表示单个状态帧的(工作)代码。 所有 50 个图形框架都想使用这个代码。 @Atriace:你的解释解决了这个特殊问题吗?

谢谢,

贾斯汀

【问题讨论】:

  • 已更新。我相信这应该回答你的问题。还要注意,帧是否存在(在有代码的图层上)一直到 USMap 的末尾并不重要,重要的是播放头是否已经从帧中读取。我不确定如果你跳过帧会发生什么,但我怀疑它会失败。

标签: actionscript-3 flash actionscript adobe


【解决方案1】:

更新

使用框架需要注意的重要一点是,在初始化之前,事物并不存在。假设Frame1 上有蓝色方块,Frame2 有红色圆圈。

播放头从左侧开始,向右移动。当它到达每一帧时,它就会创建它在那里找到的任何东西,无论是符号还是代码。这意味着如果我们尝试将红色圆圈与Frame1 上的事件侦听器连接起来,它将失败;自然是因为红圈还没有创建。

stop();

function hello(e:Event):void {
    var destination:int = (currentFrame == 1) ? 2 : 1;
    trace("Hello " + e.currentTarget.name + ": " + currentFrame + " of " + totalFrames + " > " + destination)
    gotoAndStop(destination)
}

BlueSquare.addEventListener("click", hello);
RedCircle.addEventListener("click", hello); // <<< this will fail

但是,如果我们将该单行放在与创建红色圆圈时相同的帧上,它将正确链接到 hello() 并运行。

【讨论】:

  • 嗨,Atriace,感谢您的快速回复!我编辑了我的帖子,因为我不确定我们是否在同一行。感谢您的宝贵时间!
  • 再次感谢。但我想这不是我的问题。如果我复制代码 50 次,那么每一帧都有相同的代码。它给了我多次定义相同函数的错误。你知道怎么解决吗?
  • 你真的不应该复制代码 50 次。您可以在第一帧上创建它,并从其他帧中引用它。例子如上。如果您愿意,我很乐意查看您的 fla 文件,但我不确定如何澄清这一点。
  • 哇,你是最棒的。而且我是 actionscript 3 中的菜鸟 :) 我将由函数组成的代码部分放在第一帧中,并且只将 addEventListeners 放在 50 帧中。现在它完全起作用了!
  • 所以你建议我下次在一个框架内完成我的整个项目,而不是为每个国家/州制作一个框架?
猜你喜欢
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-05
  • 1970-01-01
相关资源
最近更新 更多