gpt4 book ai didi

javascript - Google App Engine 上的 Flash ExternalInterface 问题

转载 作者:行者123 更新时间:2023-11-29 20:26:18 24 4
gpt4 key购买 nike

过去几个小时我一直在为此苦苦挣扎,我真的不知道哪里出了问题。我只是想让 Javascript 与 Flash 进行文本通信。我用这个来源找到了这个很好的例子

http://blog.circlecube.com/wp-content/uploads/2008/02/ActionscriptJavascriptCommunication.zip

我在本地运行了 html 文件,它可以很好地从 flash 发送和检索文本。然后我将完全相同的样本加载到我的开发谷歌应用程序服务器中,但我无法将文本从 javascript 发送到 flash。奇怪的是,尽管 Flash 能够发送 Javascript 文本。谁能看看他们是否可以使用 GAE 运行它?一百万!

最佳答案

它可能与 Google 应用引擎本身无关,因为整个事情都在浏览器中运行——除非在您未提及的地方存在某种服务器依赖性。假设情况并非如此......

如果您能够让 Flash 使用 ExternalInterface.call() 调用 JavaScript,但不能让 JavaScript 回调 Flash,那么可能是一两件事:您的 EI 回调和处理程序没有正确连接(在 Flash 中),或者您的 JavaScript 在浏览器中没有 SWF 对象的句柄。

您可以尝试发布一些代码,但与此同时,这里有一些我知道在 IE 和 FireFox 中都有效的东西。一、浏览器代码:

<html>
<head>
<script language="JavaScript" type="text/javascript">

var swfReady = false;

function callbacksInitialized()
{
swfReady = true;
}

function helloFlash()
{
if (swfReady)
{
// Get a handle on the Flash object
var swfObject = navigator.appName.indexOf("Microsoft") != -1 ? window["HelloMac"] : document["HelloMac"] ;

// Call back into the Flash file
swfObject.helloFlash(document.getElementById("txtMessage").value);
}
}

function helloMac(message)
{
alert(message);
}

</script>
</head>
<body scroll="no">
<div align="center">

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="HelloMac" width="600" height="300"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="HelloMac.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="HelloMac.swf" quality="high" bgcolor="#869ca7"
width="600" height="300" name="HelloMac" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>

<br /><br />
<input type="text" id="txtMessage" value="Hello, Flash!" /><br />
<input id="btnSend" type="button" value="Send to Flash" onclick="helloFlash();" />
</div>
</body>
</html>

现在,Flash 代码(在我的例子中,它是 Flex,所以希望它是清楚的):

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" height="300" width="600">

<mx:Script>
<![CDATA[

import mx.controls.Alert;
import flash.external.ExternalInterface;

private function init():void
{
addCallbacks();
}

private function addCallbacks():void
{
ExternalInterface.addCallback("helloFlash", this_helloFlash);
ExternalInterface.call("callbacksInitialized");
}

// Display a message from the host
private function this_helloFlash(message:String):void
{
Alert.show(message);
}

// Send a string to the host
private function helloMac():void
{
if (ExternalInterface.available)
{
ExternalInterface.call("helloMac", txtMessage.text);
}
}

]]>
</mx:Script>

<mx:VBox horizontalCenter="0" verticalCenter="0">
<mx:TextInput id="txtMessage" text="Hello, Mac!" />
<mx:Button id="btnSend" label="Send to Host" click="helloMac()" />
</mx:VBox>

</mx:Application>

该示例演示了 Flash 使用一些文本调用 JavaScript,以及 JavaScript 以相同的方式回调 Flash。需要注意的几点:

  • 确保您等待打电话Flash 直到 Flash 通知了浏览器已准备好开始接收电话(如我所指示的callbacksInitialized() 方法)。
  • 测试以确保您使用适当的特定于浏览器的对象引用(例如,window["HelloMac"]与文档["HelloMac"]).

在不了解更多的情况下,我猜它是这两项中的一项,因为那是我的经验。希望能帮助到你!如果您有任何后续消息,我会密切关注该帖子。

关于javascript - Google App Engine 上的 Flash ExternalInterface 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472026/

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