在运行时从PHP请求Flash影片中的数据

时间:2009-06-09 14:24:01

标签: php flash actionscript

是否可以在运行时从PHP请求Flash电影中的某些数据?也许我的实际实现可以澄清一些事情:

我使用Flash影片存储本地共享对象(因为某些原因我需要LSO代替或常规PHP cookie)。 现在,当我加载PHP文件时,我想以某种方式在运行时从LSO检索数据,将其分配给某些变量,并通过脚本的其余部分使用变量。

做一些研究让我相信它不可能按照我的意图。因此,非常欢迎任何其他建议,方法或解决方案。

4 个答案:

答案 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()您可以获取返回所需数据的页面或设置所需数据。

我建议您通过

调用flashExchange.php这样的页面
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

<强>问题:

  1. 如果flash影片是公开的,可能会有很多实例在运行 - 你需要告诉客户分开,否则你不知道谁报告它是LSO。

  2. 如果有很多此flash影片的实例正在运行,您将不断受到请求的轰炸。

  3. 对于套接字服务器解决方案,您需要......

    • 能够将php作为cli-app运行
    • 防火墙中的开放端口。第三方托管人不允许这样做(直到你非常幸运或不幸)。
  4. 可能还有其他我不知道的方式。