2010-03-15 2 views
1

Моя swf прослушивает XML из сокета и документа. Как мне получить «мои переменные» для захвата XML из сокета вместо XML-документа?swf прослушивает XML, AS3

ОТВЕТ
Я запутался с установкой переменных, и там значения. В документе нет ничего плохого: «Я просто застрял». Я планирую сделать много чтения после всех этих исследований.

ЦЕЛЬ
Моя цель состоит в том, чтобы контролировать переменные с XML Серверный сокет. Надеюсь, мой вопрос ясен, но спросите, есть ли какие-либо вопросы.

ПРИМЕР

alt text http://www.ashcraftband.com/myspace/videodnd/soc.jpg


Файл Flash

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); 

} 

Рубин Сервер «Sn ippet»

 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> 

alt text http://www.ashcraftband.com/myspace/videodnd/soc_.jpg

Вот ссылка
http://videodnd.weebly.com/
Если вы заинтересованы, вы можете установить Ruby-186-25.
a. Установка Ruby
b. Запуск policyyserver.rb first
c. flashserver next.rb
d. CTRL_ENTER socketServer.fla

ПРОБЛЕМА
Coding ошибка "Принуждение значения"

ответ

0

Я не уверен, но я заметил, что использование int(...) выше.

«Принуждение ценности» обычно означает, что вы пытаетесь использовать (или «изменять») тип данных от одного типа до несовместимого типа. (скажем, смените строку на логическую)

Ваши данные поступают во Flash как XML, и вы конвертируете некоторые из них в «int». (Flash вызывает тип данных «int» «Number». Но это не проблема, связанная с вашей ошибкой.)

Это связано с преобразованием «XML to Number», которое вы пытаетесь выполнить.

+0

Это часть проблемы. Значения int и string должны соответствовать типу данных. – 2010-03-15 21:11:35

+0

Загляните в раздел «Тип вспышки». Используйте Google. Я думаю, что это что-то вроде '(type) variablename' или что-то в этом роде. Помните, используйте «Number», а не «int». – Moshe

+0

int и Number действительно действительны в AS3. – Reuben

0

я предпочитаю, чтобы извлечь данные XML, как это:

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