【问题标题】:Is there a way to check the value of the loop parameter from ActionScript?有没有办法从 ActionScript 检查循环参数的值?
【发布时间】:2023-03-13 11:25:01
【问题描述】:

有许多参数可以添加到objectembed 标签以嵌入flash 视频。大多数都列出了here。其中一些可以通过 ActionScript 以编程方式访问/更改(例如,<param name="scale"> 可以通过 stage.scaleMode 访问)。

loop 参数的值可以访问/更改吗?

编辑添加:我知道 flashvars,这不是我要问的。

【问题讨论】:

  • 我可能是错的,但我有 90% 的把握 AS 没有等效的循环 - 仅仅是因为它不需要循环。您要完成什么,也许我可以为您指明正确的方向。
  • 我正在尝试找出哪些参数 可以 可以从 AS 访问以保留我的程序 DRY。另外,我希望能够在一些不同的程序中使用 flash 的内置参数。我 90% 确定它们不能直接访问。

标签: flash actionscript-3 actionscript


【解决方案1】:

一般的网络共识是,不,您不能从 Flash 内部访问除 flashvars/movie 以外的参数。

但是,至少在某些浏览器中,您可以从 JavaScript 访问参数 - 当然,您可以使用外部接口在 Flash 和 JavaScript 之间进行交互。

也许是一个类似于以下内容的 javascript 例程:

function getParam(paramName) {
    return $('#flashid param[name=' + paramName + ']').val();
}

连同Flash中的一个方法:

import flash.external.ExternalInterface;

function getParam(paramName:String):String {
    return String(ExternalInterface.call("getParam", paramName));
}

显然确保在 SWF 和对象/嵌入上启用脚本访问。

【讨论】:

  • @gthmb 好吧,我还没有测试过,但这个原理对我来说似乎是合理的。 JS 位有效。相当典型的 Flash 不能直接访问自己的配置,我仍然不确定这是不是真的,似乎太愚蠢了。但这就是 Flash……
【解决方案2】:

“可以访问/更改 loop 参数的值(通过 ActionScript)吗?”
简短回答: 不要打扰。

长答案:

@Orbling 的回答依赖于通过 JavaScript 进行检查,如果在添加嵌入式 Flash 视频时添加或删除参数,理论上可能会处于不一致状态。

我想了一个间接的方法来检查是否设置了播放或循环参数。只有在根视频中有两帧或多帧时才能检测到参数。

第一帧

if (temp.loadParams.playParam)
{
  temp.loadParams.loopParam = true;
  //uses external interface to log to the console (essentially the same as trace)
  temp.say('temp: looped');
  stop();
}

第二帧

if (!temp.loadParams.playParam)
{
  temp.loadParams.playParam = true;
  temp.say('temp: played');
}

temp 是文档类名,loadParams 只是一个静态对象,用于存储参数状态。如果 play 参数为真,视频将转到第 2 帧,这将设置 playParam 值。如果loop 参数为真,则视频将返回到设置loopParam 值的第1 帧。

如果play 是假的,loop 仍然可以使用Event.ENTER_FRAME 的一些花哨的步法检测到,但在这一点上,继续检查可以简单地被play(); 或覆盖的参数的值是荒谬的stop(); 在第一帧或最后一帧。

【讨论】:

  • 一个明智的想法,虽然在循环之前你不会知道是否设置了循环。
  • @Orbling 没错,这就是我授予你赏金的原因。
  • 是的,非常感谢。我的答案远非理想,但我能理解的唯一方法是获取数据。通过检测浏览器并知道如何在初始化后访问参数,可以避免不一致缺陷。如果启用了默认的右键菜单,我相信可以更改循环,这可能是内部的,所以我只会在早期相信这些参数。
猜你喜欢
  • 1970-01-01
  • 2021-04-19
  • 2020-09-27
  • 2017-03-27
  • 2016-01-05
  • 1970-01-01
  • 2021-12-21
  • 2011-02-11
相关资源
最近更新 更多