如何在从 javascript 传递的 flash (swf) 中设置动态变量?

Posted

技术标签:

【中文标题】如何在从 javascript 传递的 flash (swf) 中设置动态变量?【英文标题】:How to set dynamic variables in flash (swf) that are passed from javascript? 【发布时间】:2019-04-26 03:46:36 【问题描述】:

我正在尝试使用 Flash 反编译器修改 SWF。 我找到了一个播放实时加密流 rtmps 的 SWF,我想用它来嵌入我的网站。 我希望能够使用 javascript 更改流的 url:

//FUNCTION IN FLASH

public var serverName:String;

function frame1() : *
  
     this.nc = null;
     this.serverName = "rtmps://and_the_stream_url";
     this.streamName = "A name";
     this.stageListener = new Object();
     this.videoSizeTimer = Number(0);
     this.videoLastW = Number(0);
     this.videoLastH = Number(0);
     this.fullscreenCapable = false;
     this.hardwareScaleCapable = false;
     this.debugInterval = Number(0);
     this.bufferTime = Number(3);
     this.mainInit();
  

所以我基本上希望能够使用我在将它嵌入到我的网站时通过 javascript 传递的东西来设置 serverName 变量。

我一直在看的 javascript 是 SWFObject.. 例如:

var flashvars=;
flashvars.serverName = "my url..";

swfobject.embedSWF("myContent.swf", "my-target-element", "300", "120", "10.0.0", flashvars);

如何修改 flash(swf 文件)中的代码,以便读取我从 javascript 传递的值?

(如果还有其他更好的方法可以在网站上包含实时流 rtmps 流,那么也请告诉我 :) 我试过使用 flowplayer,但我只能用它播放 rtmp-streams)

【问题讨论】:

【参考方案1】:

flashvars 存储在 stage.loaderInfo.parameters 中。因此,如果您想遍历所有 flashvar,它会是这样的:

var flashVars:Object = stage.loaderInfo.parameters;

for (var key:String in flashVars) 

    var value:String = flashVars[key] as String;
    trace(key + ' = ' + value);

【讨论】:

以上是关于如何在从 javascript 传递的 flash (swf) 中设置动态变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 javascript 函数从子 flash swf 文件插入 HTML 文档?

将数组从 Flash (AS3) 发送到 JavaScript

如何在从父组件到子组件的角度5中单击时传递数据?

你如何从 Flash 触发 javascript 函数?

如何使用 javascript 使 flash 元素移动友好?

如何从 javascript 调用 flash actionscript 回调方法?