Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阅读C#响应。使用Actionscript 3.0编写_C#_Actionscript 3 - Fatal编程技术网

阅读C#响应。使用Actionscript 3.0编写

阅读C#响应。使用Actionscript 3.0编写,c#,actionscript-3,C#,Actionscript 3,我试图从C#响应中读入字符串。将(“字符串示例”)写入swf文件的ActionScript中 我的actionscript代码如下所示 var requestVars:URLVariables = new URLVariables(); requestVars.ornTest = "test"; var request:URLRequest = new URLRequest(); request.url = "http://localhost/ap

我试图从C#响应中读入字符串。将(“字符串示例”)写入swf文件的ActionScript中

我的actionscript代码如下所示

      var requestVars:URLVariables = new URLVariables();
      requestVars.ornTest = "test";
      var request:URLRequest = new URLRequest();
      request.url = "http://localhost/apps/game/tree/DesignFlash.aspx";
      request.method = URLRequestMethod.GET;
      request.data = requestVars;

      var loader:URLLoader = new URLLoader();
      loader.dataFormat = URLLoaderDataFormat.TEXT;
      loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
      loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
      loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
      loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

      try
      {
        loader.load(request);
      }
      catch (error:Error)
      {
        trace("Unable to load URL");
      }

           private function loaderCompleteHandler(event:Event):void
    {
          var variables:URLVariables = new URLVariables( event.target.data );
          if(variables.success)
          {
              var ornArray = deserializeString("read string from C# here");
                    for(var i:int=0;i<ornArray.length;i+=3)
                    {
                        addOrnamentProperty(ornArray[i],ornArray[i+1],ornArray[i+2]);
                    }
                    addOrnamentsFromArrayList();
          }
    }       

    private function httpStatusHandler (event:Event):void
    {
          //trace("httpStatusHandler:" + e);
    }

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

    private function ioErrorHandler(event:Event):void
    {
        trace("ioErrorHandler: " + event);
    }
protected void Page_Load(object sender, EventArgs e)
    {

            var test  = Request["ornProperties"];

            if (!String.IsNullOrEmpty(Request.Params["ornTest"]))
            {
                string paramVars = Request.Params["ornTest"];

                Response.Write("this string");
            }

    }
如何将C#中的“this string”写入SWF文件的ActionScript中,此时loaderCompleteHandler中的“read C#string here”字样


谢谢

首先进行简单的跟踪,以确保从服务器获得响应:

private function loaderCompleteHandler(event:Event):void
{
    trace("Received server response:", event.target.data);
}
您的响应应该在返回值的
数据
字段中。如果要返回键值对(这是当前ActionScript代码所期望的),则需要格式化返回文本以支持它

e、 g

我对C#不太了解,不知道
Response
是否会对数据进行url编码,但数据应该是url编码的。如果像这样发送键值对,那么可以使用示例中的
urlvaries
将其解析为更容易使用的形式

e、 g


现在我不是XML的超级粉丝,但是Flash可以很好地使用这种格式。如果在响应中返回xml:

Response.Write("<root><blah>foo</blah></root>");
然后您可以使用E4X来操作数据。天气真的很好。我用它来做任何比使用AMF的完全Flash远程处理更简单的事情


如果您要在服务器和闪存之间来回发送大量数据,您应该研究远程处理和AMF。

事实上,您非常接近

请确保清除.aspx文件(顶部的Page元素除外),并在响应之前调用Response.clear()。写出文本。否则,您将随文本一起发送html、head和body标记

然后,只需查看Actionscript中load complete处理程序中的loader.data:

    private function loaderCompleteHandler(event:Event):void
    {
              var variables:URLVariables = new URLVariables( event.target.data );
              if(variables.success)
              {
                      var ornArray = deserializeString(loader.data); //just look at loader.data here.
                                    for(var i:int=0;i<ornArray.length;i+=3)
                                    {
                                            addOrnamentProperty(ornArray[i],ornArray[i+1],ornArray[i+2]);
                                    }
                                    addOrnamentsFromArrayList();
              }
    }     
C#:

动作脚本:

    private function loaderCompleteHandler(event:Event):void
    {
              var variables:URLVariables = new URLVariables( event.target.data );
              if(variables.success)
              {
                      var ornArray = deserializeString(loader.data); //just look at loader.data here.
                                    for(var i:int=0;i<ornArray.length;i+=3)
                                    {
                                            addOrnamentProperty(ornArray[i],ornArray[i+1],ornArray[i+2]);
                                    }
                                    addOrnamentsFromArrayList();
              }
    }     
私有函数loaderCompleteHandler(事件:事件):void
{
变量:URLVariables=新的URLVariables(event.target.data);
if(变量.成功)
{
var ornArray=deserializeString(loader.data);//请在此处查看loader.data。

for(var i:int=0;这正是我需要知道的。loader.data是关键。非常感谢
private function loaderCompleteHandler(event:Event):void
{
    var loader:URLLoader = URLLoader(event.target);
    var xml:XML = new XML(loader.data);
}
protected void Page_Load(object sender, EventArgs e)
{
   var test  = Request["ornProperties"];
   if (!String.IsNullOrEmpty(Request.Params["ornTest"]))
   {
       string paramVars = Request.Params["ornTest"];
       Response.Clear(); //just to make sure you're not sending anything else.
       Response.Write("this string");
   }
}
    private function loaderCompleteHandler(event:Event):void
    {
              var variables:URLVariables = new URLVariables( event.target.data );
              if(variables.success)
              {
                      var ornArray = deserializeString(loader.data); //just look at loader.data here.
                                    for(var i:int=0;i<ornArray.length;i+=3)
                                    {
                                            addOrnamentProperty(ornArray[i],ornArray[i+1],ornArray[i+2]);
                                    }
                                    addOrnamentsFromArrayList();
              }
    }