是否可以在运行时从PHP请求Flash电影中的某些数据?也许我的实际实现可以澄清一些事情:
我使用Flash影片存储本地共享对象(因为某些原因我需要LSO代替或常规PHP cookie)。 现在,当我加载PHP文件时,我想以某种方式在运行时从LSO检索数据,将其分配给某些变量,并通过脚本的其余部分使用变量。
做一些研究让我相信它不可能按照我的意图。因此,非常欢迎任何其他建议,方法或解决方案。
答案 0 :(得分:2)
互通Flash和PHP的最佳方式是XML(不要忘记使用UTF-8!)。
PHP中的:
$xml = new DOMDocument('1.0', 'UTF-8');
$doc = $xml->appendChild($xml->createElement('my-root-element'));
...
header('Content-Type: text/xml; charset=utf-8');
echo $xml->saveXML();
在as3
var myLoader:URLLoader = new URLLoader();
var req:URLRequest = new URLRequest('http://host.com/my_xml.php');
myLoader.addEventListener(Event.COMPLETE, onMyXMLLoad);
myLoader.load(req);
function onMyXMLLoad(evt:Event)
{
trace(evt.target.data);
var xml:XML = new XML(evt.target.data);
...
}
您还可以阅读ExternalInterface ...是的,有时它会有所帮助......您可能希望动态生成JS以与Flash电影进行通信。
答案 1 :(得分:1)
我们在这里有两种方式(我们这样做了很多)。一种是编写PHP,以便输出格式良好的XML,Flash应用程序可以使用它。另一个是使用AMFPHP配置稍微复杂一点,但在将PHP对象/数组转换为本机Flash对象方面它可以做很多事情。
不确定这是否完全适合您的特定情况,但就在Flash应用程序中从PHP检索数据的一般解决方案而言,它可以完成工作。
答案 2 :(得分:0)
使用getURL()您可以获取返回所需数据的页面或设置所需数据。
我建议您通过
getURL('flashExchange.php?cacheBust=' + random(99999), '_blank');
您可以添加更多GET变量,也可以使用此功能POST数据。
答案 3 :(得分:0)
在我看来(我不是闪存编码器)......
你必须推送到php(而不是从swf拉),这意味着你的flash电影必须报告其LSO的状态,如果它改变。为什么?因为你的服务器不知道正在运行的swf实例。
你可以通过......来做到这一点。
不断将LSO的序列化版本发布到服务器(并将其保存到文件或数据库)
=>如果你运行你的PHP脚本,它可以使用最新的数据
非常简单直接。可能是要走的路。或在php脚本中创建套接字服务器。 swf现在尝试连续连接到服务器。如果服务器回答,则发布序列化的LSO。
=>如果你运行你的php脚本,它会阻塞,直到建立连接并且然后与实时数据一起使用
在php中编写套接字服务器既不简单也不难,但你需要能够在cli模式下运行php
<强>问题:强>
如果flash影片是公开的,可能会有很多实例在运行 - 你需要告诉客户分开,否则你不知道谁报告它是LSO。
如果有很多此flash影片的实例正在运行,您将不断受到请求的轰炸。
对于套接字服务器解决方案,您需要......
可能还有其他我不知道的方式。