gpt4 book ai didi

javascript 到 flash 通信,无需嵌入

转载 作者:行者123 更新时间:2023-11-28 09:28:19 24 4
gpt4 key购买 nike

我正在从本地主机 Xampp 调用我的 Main.swf,其中包含一个提示按钮,单击该按钮时会调用提示单击函数

AS3代码

function promptClick(event:MouseEvent):void
{
var desiredURL:URLRequest = new URLRequest("javascript:NewWindow=window.open('save.html','newWin','width=600,height=400,left =0,top=0,toolbar=No,location=No,scrollbars=No,status=No,resizable=No,fullscreen=No'); NewWindow.focus(); void(0);");

navigateToURL(desiredURL, "_self");

}

此窗口 (newwin) 在“save.html”中定义了一个“接受”按钮,单击“接受”按钮后,数据应发送到调用 Main.swf。我无法从 javascript 窗口调用 Main.swf 函数通过AS3中的externalInterface回调

我发现,当我将 Main.swf 嵌入到包含编辑器的同一窗口时,它可以工作(对 Actionscript 的外部接口(interface)调用),但我不想在编辑器页面上嵌入 swf有什么方法可以直接从 javascript 窗口调用 swf 而无需嵌入吗?

最佳答案

您的代码应该调用外部定义的 JavaScript 函数。示例:

Javascript 文件:

var formWin,

formWinParams = {
btnSelector: '.btn-on-form-win',
name: 'windowNameHere',
src: 'save.html',

// Advanced string join (param could just be one long string instead)
params: [
'width=600',
'height=400',
'left=0',
'top=0',
'toolbar=No',
'location=No',
'scrollbars=No',
'status=No',
'resizable=No',
'fullscreen=No'
].join(',')
},

swfFile;

/**
* Gets a javascript object reference to a swf file
* @return object
* @note You should swfobject or jquery to get your swf file but
* you might also need to setup a mechanism to make sure swf file
* is ready for interaction (or swf load is complete)
* @see example of load check http://abi.edu/js/new-video-gallery.js
*/
function getSwf (movieName) {
if ( navigator.appName.indexOf( "Microsoft" ) != -1 ){
return window[ movieName ];
}
else {
return document[ movieName ];
}
}

function onBtnClick (e) {
swfFile.functionFromSwfFileHere();
}

/**
* Gets form window lazily (if not there create it)
* @return window object
* @note Javascript function params are optional so we use the || operator to check if
* params are set otherwise we use our own values.
*/
function getFormWindow (src, name, params) {
src = src || formWinParams.src;
name = name || formWinParams.name;
params = params || formWinParams.params;

// Create window if not already created
if (formWin === null) {
formWin = window.open(src, name, params);
// Setup handling of the form window button click
$(formWinParams.btnSelector, formWin).click(onBtnClick);
}

// Bring window to front
formWin.focus();

return formWin;
}

// Wrap initialization of script for ease of use
function init () {
// Get reference to swf file
swfFile = getSwf('swfFileIdHere');

// Or use a library like jquery
swfFile = $('#swf-file-id-here');
}

// Initialize javascript on window load (using jquery)
$(function () {
init();
});

现在将 UrlRequest 源更改为类似的内容

“javascript: getFormWindow();”

“javascript: getFormWindow('save.html', 'saveWin');”

这一切都是从那里处理的,简化了你的 ActionScript 和 JavaScript 代码并使其更加动态。

关于javascript 到 flash 通信,无需嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14008757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com