2011-02-04 2 views
0

누구든지 나를 도와주세요. 내 문제는 내가 "galleryType"태그 아래에있는 많은 갤러리의 요소 섹션을 식별하기 위해 변수를 사용하고 있으며 아무것도 표시하지 않는 것입니다. 내 갤러리를 찾고 있습니까? 내 코드에서 올바른 방법을 입력하거나 XML을 통해 내 갤러리 유형을 반복해야합니다. 미리 감사드립니다. 여기 xml 구문 분석에서 변수를 사용하면 작동하지 않습니다.

<My_gallery> 
    <galleryType Name="GalleryName001"> 
     <images> 
      <image label="example text" thumb_src="folder/thumb001.jpg">folder/image001.jpg</image> 
      <image label="example text" thumb_src="folder/thumb002.jpg">folder/image002.jpg</image> 
      <image label="example text" thumb_src="folder/thumb003.jpg">folder/image003.jpg</image> 
     </images> 
    </galleryType> 
    <galleryType Name="GalleryName002"> 
     <images> 
      <image label="example text" thumb_src="folder/thumb001.jpg">folder/image001.jpg</image> 
      <image label="example text" thumb_src="folder/thumb002.jpg">folder/image002.jpg</image> 
      <image label="example text" thumb_src="folder/thumb003.jpg">folder/image003.jpg</image> 
     </images> 
    </galleryType> 
</My_gallery> 

내 AS3 코드 :

public function selectGallery(val:String):void { 
    galleryName = val; 
    navClass = new navigationClass(galleryName); 
    galleryName = navClass.getGalleryType; 
    loadXML("myGallery001.xml"); 
} 

private function loadXML(img_source:String):void { 
    xmlData = new XML(); 
    xmlData.ignoreWhitespace = true; 
    xmlLoader = new URLLoader(); 
    xmlLoader.load(new URLRequest(img_source)); 
    xmlLoader.addEventListener(Event.COMPLETE, XMLloaded); 
} 

private function XMLloaded(evt:Event):void { 
    xmlData = new XML(evt.target.data);  

    // I am getting a result back with my trace but nothing is going into my imgList 
    imgList = xmlData.galleryType.(@Name==galleryName).images.*; 
    trace(xmlData.galleryType.(@Name == galleryName).images.*); 
}images 
+0

imgList = new XMLList(new XML(xmlData.galleryType.(@Name == galleryName).images.* as String));를 시도? – Patrick

+0

evt.target.data에는 내 XML 만 포함되어 있습니다. galleryName은 공용 변수입니다.이게 무슨 뜻입니까? – dinogy

+0

XMLloaded에 galleryName과 evt.target.data의 내용을 추적 할 수 있습니까? – Patrick

답변

1

는 evt.target.data로, galleryName에 포함 값의 확신

0

내가 루프 갈 것입니다, 당신은 루프에 전달하는 값보다 효율적으로 제어 할 그런 식으로 여기

내 XML 코드 .

예 :

var thumbArray = new Array(); 

function processXML(evt:Event):void 
{ 
    galleryXML = new XML(evt.target.data); 
    for each (var i:XML in galleryXML.files.file) 
    { 
      thumbArray.push(i.thumbnail); 
    } 
} 

다음 당신은 당신의 목록이나 데이터 그리드에 배열을 바인딩 할 수 있습니다, 또한 목록의 변경 또는 기타 객체를 제어하기가 쉽습니다을 반영하기 위해 배열을 변경 한 경우, [바인딩]는 것입니다 접속되고있는 Object의 배열의 변경을 반영합니다.

+0

답장을 보내 주셔서 감사합니다. 코드 예제에서 무엇을 의미하는지 확신 할 수 없습니다. 모든 노드 (내 갤러리 유형)와 하위 노드를 배열 호출 thumbArray로 푸시해도 원하는 갤러리 유형의 하위 노드에 계속 도달 할 수는 없습니다. – dinogy

+0

물론이 예제는 순전히 XML 객체를 반복하는 예제로 사용되었습니다. 더 많은 레벨이 필요하다면 ArrayCollection을 사용하고 Array로 채울 것을 제안 할 것입니다. 그런 다음 모든 하위 노드에도 연결할 수 있습니다. 나는 당신을 당신의 질문에 묘사 된 방식과 루프를 사용하여 결정하는 방향으로 향하고있었습니다. ArrayCollection에 대한 정보는 [link] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/ArrayCollection.html)에서 확인할 수 있습니다. – Wilfred

+0

안녕 Wilfred. 댓글 주셔서 감사합니다. ArrayCollection에 대해 많이 읽지는 ​​않았지만 여기에서 올바른 트랙을 찾아야합니다. 올바른 노드를 필터링하고 이전에 하위 노드를 필터링하는 예제를 어떻게 사용할 수 있는지 오해했지만 그 수식을 사용할 것입니다. 감사 – dinogy

관련 문제