swf侦听XML,AS3

swf侦听XML,AS3,xml,flash,actionscript-3,Xml,Flash,Actionscript 3,我的swf从套接字和文档侦听XML如何让“我的变量”从套接字而不是XML文档中获取XML? 回答 我对设置变量感到困惑,并且没有设置值。这份文件没有什么问题,“我只是卡住了。”我计划在做了所有这些研究之后,多读一些书 目的 我的目的是使用XML套接字服务器控制变量。我希望我的问题很清楚,但如果有任何问题,请询问。 示例 import flash.net.*; import flash.display.*; import flash.events.*; import flash.system.Se

我的swf从套接字和文档侦听XML如何让“我的变量”从套接字而不是XML文档中获取XML?

回答
我对设置变量感到困惑,并且没有设置值。这份文件没有什么问题,“我只是卡住了。”我计划在做了所有这些研究之后,多读一些书

目的
我的目的是使用XML套接字服务器控制变量。我希望我的问题很清楚,但如果有任何问题,请询问。

示例

import flash.net.*;
import flash.display.*;
import flash.events.*;
import flash.system.Security;
import flash.utils.Timer;
import flash.events.TimerEvent;

//MY VARIABLES, LINE 8-12
var timer:Timer = new Timer(10);
var myString:String = "";
var count:int = 0;
var myStg:String = "";
var fcount:int = 0;

var xml_s=new XMLSocket();
xml_s.addEventListener(Event.CONNECT, socket_event_catcher);//OnConnect//
xml_s.addEventListener(Event.CLOSE, socket_event_catcher);//OnDisconnect//
xml_s.addEventListener(IOErrorEvent.IO_ERROR, socket_event_catcher);//Unable To Connect//
xml_s.addEventListener(DataEvent.DATA, socket_event_catcher);//OnDisconnect//
xml_s.connect("localhost", 1999);


function socket_event_catcher(Event):void {
    switch (Event.type) {
        case 'ioError' :
            trace("ioError: " + Event.text);//Unable to Connect :(//
            break;
        case 'connect' :
            trace("Connection Established!");//Connected :)//
            break;
        case 'data' :
            trace("Received Data: " + Event.data);

            break;
        case 'close' :
            trace("Connection Closed!");//OnDisconnect :( //
            xml_s.close();
            break;
    }


}


//LOAD XML
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("time.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);

//PARSE XML
function processXML(e:Event):void {
    myXML = new XML(e.target.data);
    trace(myXML.COUNT.text()); //-77777

    //grab the data as a string
    myString = myXML.COUNT.text()

    //grab the data as an int
    count = int(myXML.COUNT.text());

    //grab the data as a string
    myString = myXML.COUNT.text()

    //grab the data as an int
    count = int(myXML.COUNT.text());


    //grab the data as a string
    myStg = myXML.COUNT.text()

    //grab the data as an int
    fcount = int(myXML.COUNT.text());

    //grab the data as a string
    myStg = myXML.COUNT.text()

    //grab the data as an int
    fcount = int(myXML.COUNT.text());


    trace("String: ", myString);
    trace("Int: ", count);
    trace(count - 1); //just to show you that it's a number that you can do math with (-77778)

    //TEXT
    var text:TextField = new TextField();
    text.text = myString;
    addChild(text);

}


闪存文件

import flash.net.*;
import flash.display.*;
import flash.events.*;
import flash.system.Security;
import flash.utils.Timer;
import flash.events.TimerEvent;

//MY VARIABLES, LINE 8-12
var timer:Timer = new Timer(10);
var myString:String = "";
var count:int = 0;
var myStg:String = "";
var fcount:int = 0;

var xml_s=new XMLSocket();
xml_s.addEventListener(Event.CONNECT, socket_event_catcher);//OnConnect//
xml_s.addEventListener(Event.CLOSE, socket_event_catcher);//OnDisconnect//
xml_s.addEventListener(IOErrorEvent.IO_ERROR, socket_event_catcher);//Unable To Connect//
xml_s.addEventListener(DataEvent.DATA, socket_event_catcher);//OnDisconnect//
xml_s.connect("localhost", 1999);


function socket_event_catcher(Event):void {
    switch (Event.type) {
        case 'ioError' :
            trace("ioError: " + Event.text);//Unable to Connect :(//
            break;
        case 'connect' :
            trace("Connection Established!");//Connected :)//
            break;
        case 'data' :
            trace("Received Data: " + Event.data);

            break;
        case 'close' :
            trace("Connection Closed!");//OnDisconnect :( //
            xml_s.close();
            break;
    }


}


//LOAD XML
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("time.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);

//PARSE XML
function processXML(e:Event):void {
    myXML = new XML(e.target.data);
    trace(myXML.COUNT.text()); //-77777

    //grab the data as a string
    myString = myXML.COUNT.text()

    //grab the data as an int
    count = int(myXML.COUNT.text());

    //grab the data as a string
    myString = myXML.COUNT.text()

    //grab the data as an int
    count = int(myXML.COUNT.text());


    //grab the data as a string
    myStg = myXML.COUNT.text()

    //grab the data as an int
    fcount = int(myXML.COUNT.text());

    //grab the data as a string
    myStg = myXML.COUNT.text()

    //grab the data as an int
    fcount = int(myXML.COUNT.text());


    trace("String: ", myString);
    trace("Int: ", count);
    trace(count - 1); //just to show you that it's a number that you can do math with (-77778)

    //TEXT
    var text:TextField = new TextField();
    text.text = myString;
    addChild(text);

}
Ruby服务器“代码片段”

        msg1 = {"msg" => {"head" => {"type"  => "frctl", "seq_no" => seq_no, "version" => 1.0},
                "SESSION" => {"text" => "88888", "timer" => -1000,
                "count" => 10, "fcount" => "10"}}}
XML

<?xml version="1.0" encoding="utf-8"?>
<SESSION>
   <TIMER TITLE="speed">100</TIMER>
   <COUNT TITLE="starting position">88888</COUNT>
   <FCOUNT TITLE="ramp">1000</FCOUNT>
</SESSION>

100
88888
1000

这里有一个链接

如果您感兴趣,可以安装Ruby 186-25。
A.安装Ruby
B首先运行policyserver.rb
Cflashserver next.rb
DCTRL\u输入socketServer.fla

问题

编码错误“强制值”

我不确定,但我注意到上面使用了
int(…)

“强制值”通常意味着您试图将数据类型从一种类型强制转换(或“更改”)为不兼容的类型。(例如,将字符串更改为布尔值)

您的数据以XML的形式进入Flash,您正在将其中的一些数据转换为“int”。(Flash调用“int”数据类型“Number”。但这不是基于错误的问题。)


它与您正在尝试的“XML到数字”转换有关。

我更喜欢这样提取XML数据:

  private function onConfigLoaded(e:Event):void {
        var xml:XML = new XML(urlo.data);
        userData = new XMLList(xml.user);
        settings = new XMLList(xml);

这是问题的一部分。int和string值必须与数据类型匹配。使用谷歌。我认为它类似于
(type)variablename
之类的东西。记住,使用“Number”,而不是“int”。int和Number实际上在AS3中都是有效的。