0

我目前正在尝试将一堆高分行从我的网站数据库加载到我的 Flash 应用程序中。我正在使用 PHP 从 MySQL 数据库中检索数据并将其返回到闪存。当我在我的 Flash Pro 中调试我的应用程序时,一切正常,并且返回了数据。

但是,当我发布 swf 并双击它时,它只显示空白屏幕,没有任何反应。当我删除访问 PHP 脚本的代码时,它可以工作,但没有检索到数据。

我在我的 htdocs 文件夹中添加了一个 crossdomain.xml。这是xml的内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

但它仍然无法正常工作......

任何帮助表示赞赏。THX b4

4

1 回答 1

0

您没有提到您使用哪个类与 PHP 进行通信......但无论它是什么类也将具有评估失败的方法。查看失败响应。

例如,URLRequest 类可以抛出各种错误,这些错误可以被捕获以诊断问题。这是我在Adob​​e 参考资料中找到的一些代码...

下面的示例创建一个新的 Loader 对象,并将一个包含 XML 文件路径的 URLRequest 对象传递给它。如果加载操作成功,则会调度一个 complete 事件,并将 XML 文件中的数据跟踪到输出。其他事件处理程序捕获其他事件,包括错误事件

要运行此示例,请将名为 XMLFile.xml 的文件放置在与 SWF 文件相同的目录中。

package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.*;

public class URLRequestExample extends Sprite {
    private var loader:URLLoader;
    
    public function URLRequestExample() {
        loader = new URLLoader();
        configureListeners(loader);

        var request:URLRequest = new URLRequest("XMLFile.xml");
        try {
            loader.load(request);
        } catch (error:Error) {
            trace("Unable to load requested document.");
        }
    }

    private function configureListeners(dispatcher:IEventDispatcher):void {
        dispatcher.addEventListener(Event.COMPLETE, completeHandler);
        dispatcher.addEventListener(Event.OPEN, openHandler);
        dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
        dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
        dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
        dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
    }

    private function completeHandler(event:Event):void {
        var loader:URLLoader = URLLoader(event.target);
        trace("completeHandler: " + loader.data);
    }

    private function openHandler(event:Event):void {
        trace("openHandler: " + event);
    }

    private function progressHandler(event:ProgressEvent):void {
        trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
    }

    private function securityErrorHandler(event:SecurityErrorEvent):void {
        trace("securityErrorHandler: " + event);
    }

    private function httpStatusHandler(event:HTTPStatusEvent):void {
        trace("httpStatusHandler: " + event);
    }

    private function ioErrorHandler(event:IOErrorEvent):void {
        trace("ioErrorHandler: " + event);
    }
}
}

一种更快的方法是简单地打开浏览器的调试控制台(例如,在 Chrome 中,右键单击 > 检查元素 > 控制台选项卡)。看看错误;如果出现安全限制,浏览器也可能会抛出错误。

于 2013-11-06T12:50:33.710 回答