ActionScript+;JavaScript

ActionScript+;JavaScript,javascript,actionscript,flash,Javascript,Actionscript,Flash,我想从嵌入的.swf文件调用JavaScript函数。具体地说,我想从内部调用一个外部链接JavaScript文件中的函数: 函数loadTrack(){ //nosferathoo提供的无线电模式功能,更多信息请访问:https://sourceforge.net/tracker/index.php?func=detail&aid=1341940&group_id=128363&atid=711474 if(收音机模式和曲目索引==播放列表大小-1){ playlist\u url=播放列表\

我想从嵌入的
.swf
文件调用JavaScript函数。具体地说,我想从内部调用一个外部链接JavaScript文件中的函数:

函数loadTrack(){
//nosferathoo提供的无线电模式功能,更多信息请访问:https://sourceforge.net/tracker/index.php?func=detail&aid=1341940&group_id=128363&atid=711474
if(收音机模式和曲目索引==播放列表大小-1){
playlist\u url=播放列表\u数组[曲目索引]。位置;
对于(i=0;i轨迹\显示\遮罩\宽度){
track_display_mc.onEnterFrame=滚动标题;
}否则{
轨道显示单帧=空;
轨道显示显示文本。\ux=0;
}
loadSound(播放列表数组[track\u index].location,true);
播放音乐(2)
//信息按钮
if(播放列表数组[曲目索引].info!=未定义){
信息可视=真;
info\u mc.info\u btn.onPress=函数(){
getURL(播放列表数组[曲目索引].info,“\u空白”)
}
info\u mc.info\u btn.onRollOver=函数(){
track\u display\u mc.display\u txt.text=信息按钮\u text;
}
info\u mc.info\u btn.on卷展栏=函数(){
track\u display\u mc.display\u txt.text=播放列表\u数组[track\u index]。标签;
}
}否则{
信息可视=假;
}
resizeUI();
_root.onEnterFrame=函数(){
//HACK不需要在每个帧设置音量
mysound.setVolume(此.volume\u级别)
var load_percent=(mysound.getbytesload()/mysound.getBytesTotal())*100
轨道显示装载机装载条装载率=装载百分比;
if(mysound.getBytesLoaded()==mysound.getByTestTotal()){
//_root.onEnterFrame=null;
}
}
}
它在一个.as文件中,我假设它以某种方式成为了swf文件。我将如何进行此操作并重新编译
.as
文件

  getURL("javascript:displayPost(" + postId + "," + feedId +")");
发件人:

您还可以查看以下内容:

发件人:

您还可以查看以下内容:


如果将来有人看到这个问题,altCognito的Actionscript 3版本的答案如下:

ExternalInterface.call("displayPost",postId,feedId);

另外,如果将来有人看到这个问题,altCognito的Actionscript 3版本的答案如下:

ExternalInterface.call("displayPost",postId,feedId);

让我们使用JS注入和ExternalInterface(两种方法在两种语言中都适用)为AS2和AS3一起编译这些答案

AS2:

AS3:


请注意,在AS2和AS3中,ExternalInterface方法是完全相同的(ExternalInterface是在Flash 8中为AS2引入的)。在AS2和AS3中,javascript注入方法是相同的,只是它是navigateToURL而不是getURL,并且url字符串包装在新的URLRequest()中,因为它需要一个URLRequest对象。另外,在使用javascript注入时,最好将目标窗口设置为“\u self”,以避免打开新的选项卡或窗口。

让我们使用JS注入和外部接口为AS2和AS3一起编译这些答案(这两种方法在两种语言中都适用)

AS2:

AS3:


请注意,在AS2和AS3中,ExternalInterface方法是完全相同的(ExternalInterface是在Flash 8中为AS2引入的)。在AS2和AS3中,javascript注入方法是相同的,只是它是navigateToURL而不是getURL,并且url字符串包装在新的URLRequest()中,因为它需要一个URLRequest对象。另外,在使用javascript注入时,将目标窗口设置为“\u self”也是一个很好的做法避免打开新选项卡或窗口。

哇!响应速度极快!我现在无法测试,但看起来应该可以。谢谢!我假设postId和feedId是displayPost的参数?哇!响应速度极快!我现在无法测试,但看起来应该可以。谢谢!我假设postId和feedId是displayPost的参数显示柱?

// to use javascript injection in a url request
navigateToURL(new URLRequest("javascript:displayPost(" + postId + "," + feedId +");"), "_self");

// to use the external interface
import flash.external.ExternalInterface;
ExternalInterface.call("displayPost",postId,feedId);