0
나는 블리 팅 엔진을 만들려고 노력하고 있으며,이 부분은 정말 힘든 시간을줍니다. 나는 텍스쳐 패커가 뱉어 낸 파일로부터 xml 파싱을 모두하기위한 외부 클래스를 만들려고 노력하고있다. 그러나AS3 -로드 된 데이터의 변수 값을 반환하는 함수의 문제
var _xmlParser:XmlParserBlit = new XmlParserBlit();
_blitDataAry = _xmlParser.getAryFromBlitXmlData("blit_test_4.xml");
: 난 그냥, 이런 식으로 뭔가를 인스턴스화하고 그것의 직업 수행을위한 하나 개의 함수를 호출 할 수 있도록 기대했다
XmlParserBlit.as
라는 내 유틸리티 패키지에 클래스를 만들어 그렇게 쉽지는 않을 것 같습니다. XmlParserBlit 클래스의 내부 함수는로드가 완료 될 때 발생하는 함수를 트리거하는 이벤트 수신기를가집니다. 플래시는 함수를 통해 계속 진행되며 추적 ("Finished Array :"+ _xmlDataAry); 그냥 빈 배열을 반환합니다. 완전한 청취자가 끝나기를 기다릴 수있는 방법이 있습니까? 아니면 getAryFromBlitXmlData에서 onXmlLoaded로 값을 반환 할 책임을 되돌릴 수 있습니까?나는 정말로 혼란스럽고,이 문제를 이길 방법을 배우는 것은 비슷한 문제를 해결하는 방법에 대한 나의 마음을 열어 줄 것이다. 감사.
public function getAryFromBlitXmlData(xmlPath:String):Array
{
_xmlDataAry = []
_xmlPath = xmlPath;
_testXml = new XML();
_testXmlRequest = new URLRequest(_xmlPath);
_testXmlLoader = new URLLoader();
_testXmlLoader.addEventListener(Event.COMPLETE, onXmlLoaded);
_testXmlLoader.load(_testXmlRequest);
trace("Finished Array: " + _xmlDataAry);
return _xmlDataAry;
}
protected function onXmlLoaded(event:Event):void
{
_loadedXML = new XML(event.target.data);
var theSprites:XMLList = _loadedXML..sprite
for each (var _rectSprite:XML in theSprites)
{
//--------------------------------------
// do some string manipulations here
//--------------------------------------
}
var _rectangle:Rectangle = new Rectangle(_xValue, _yValue, _widthValue, _heightValue);
var miniAry:Array = [_rectangle, _xOffsetValue, _yOffsetValue]
_xmlDataAry.push(miniAry);
//* want to return _xmlDataAry to the getAryFromBlitXmlData function
}
}
onXmlLoaded
당신이 네트워크를 통해에서 XML을 잡아 있습니까 당신의_xmlDataArray
내부를 처리하는 것? 그렇지 않다면 이벤트를 사용하여 데이터를로드하고 싶지 않을 것입니다. 더 비슷한 것을 제안 할 것입니다 : 'protected function loadXML (filename : String) : Array { _loadedXML = new XML (filename) ; // 작업 수행 return _xmlDataArray; }' – SeiferTim이것은 결국 네트워크를 통과하기위한 것입니다. 그것은 온라인 게임에있을 것이고 xml은 respository/webserver에서로드됩니다. 그게 왜 차이가 나는지 나는 알지 못합니다. XML을 사용할 때로드가 완료되거나 오류가 발생할 때까지 기다릴 필요가 없습니까? – Jim
예, 처리하기 전에 XML이로드되었는지 확인해야하지만 코드에서는 그렇지 않습니다. – SeiferTim