2011-07-13 43 views
0

編號喜歡放置一個讀取XML並在我的網站上顯示相關圖像的flash圖像庫,但是id希望能夠使用其編號以編程方式在我的XML中獲得特定的幻燈片。例如,我的XML有x個幻燈片(我剛剛複製並粘貼幻燈片並更改了ID)。作爲一個例子,id喜歡獲取id爲2的幻燈片元素。 如果我在XSLT中使用XPath,我會做類似「location/image_gallery/slideshow [@id = 2]」的操作。XML Flash播放器

<location> 
<image_gallary> 
    <slideshow id="1" width="230" height="145" speed="2"> 
     <image url="graphics/chesterfield.jpg" title="Market Walk" href="htle.co.uk/" /> 
     <image url="graphics/cranley.jpg" title="History" href="http://www.google.co.uk/" /> 
    </slideshow> 

    <slideshow id="3" width="230" height="145" speed="4"> 
     <image url="graphics/chesterfield.jpg" title="rket Walk" href="http://www.google.co.uk/" /> 
     <image url="graphics/cranley.jpg" title="History" href="http://www.google.co.uk/" /> 
    </slideshow> 

    <slideshow id="2" width="230" height="145" speed="3"> 
     <image url="graphics/chesterfield.jpg" title="rket Walk" href="http://www.google.co.uk/" /> 
     <image url="graphics/cranley.jpg" title="History" href="http://www.google.co.uk/" /> 
    </slideshow> 
</image_gallery> 
</location> 

*note that the id's can be in any order, i can hard code the actionscript to get to a particular slideshow, however id like to be able to programatically use the id and then call it in my xslt. Any help would be appreciated. 

Im using actionscript 2.0. Here is what i have 

import mx.transitions.Tween; 
import mx.transitions.easing.*; 

var myShowXML = new XML(); 
myShowXML.ignoreWhite = true; 
myShowXML.load("xml/london_gb.xml"); 

myShowXML.onLoad = function() { 

_root.myWidth = myShowXML.firstChild.childNodes[0].firstChild.attributes.width; 
_root.myHeight = myShowXML.firstChild.childNodes[0].firstChild.attributes.height; 
_root.mySpeed = myShowXML.firstChild.childNodes[0].firstChild.attributes.speed; 

_root.myImages = myShowXML.firstChild.firstChild.firstChild.childNodes; 
_root.myImagesNo = myImages.length; 

trace(myImages.length); 

createContainer(); 
callImages(); 

}; 

function createContainer() { 

_root.createEmptyMovieClip("myContainer_mc",_root.getNextHighestDepth()); 

myContainer_mc.lineTo(_root.myWidth,0); 
myContainer_mc.lineTo(_root.myWidth,_root.myHeight); 
myContainer_mc.lineTo(0,_root.myHeight); 
myContainer_mc.lineTo(0,0); 

myContainer_mc._x = (Stage.width-myContainer_mc._width)/2; 
myContainer_mc._y = (Stage.height-myContainer_mc._height)/2; 

}; 

function callImages() { 

_root.myMCL = new MovieClipLoader(); 
_root.myPreloader = new Object(); 
_root.myMCL.addListener(_root.myPreloader); 

_root.myClips_array = []; 

_root.myPreloader.onLoadComplete = function(target) { 

_root.myClips_array.push(target); 
target._alpha=0; 

if (_root.myClips_array.length == _root.myImagesNo) { 

moveSlide(); 
myShowInt = setInterval(moveSlide, (_root.mySpeed*1000)+1000); 
} 

} 

for (i=0; i<_root.myImagesNo; i++) { 

temp_url = _root.myImages[i].attributes.url; 
temp_mc = myContainer_mc.createEmptyMovieClip(i, myContainer_mc.getNextHighestDepth()); 

_root.myMCL.loadClip(temp_url,temp_mc); 
} 

}; 

function moveSlide(){ 

current_mc = _root.myClips_array[_root.target_mc]; 
new Tween(current_mc, "_alpha", Strong.easeOut, 100, 0, 1, true); 

_root.target_mc++; 

if (_root.target_mc >= _root.myImagesNo){ 
_root.target_mc = 0; 
} 

next_mc = _root.myClips_array[_root.target_mc]; 
new Tween(next_mc, "_alpha", Strong.easeOut, 0, 100, 1, true); 

}; 
+0

我沒有得到ü.. u能解釋一下你想要做什麼下文? – Benny

+0

嘿,基本上我希望能夠獲得依賴於id的元素幻燈片,而不是將它寫入actionscript即firstChild.childNodes等等等等等 – Hatzi

回答

0

_xmlContainer.imageGallary.slideshow。@ id [0];

試試這個。

0

加入這一行

next_mc.onRelease = function() { 
    getURL(_root.myImages[target_mc].attributes.href,"_blank"); 
}; 

此行

next_mc = _root.myClips_array[_root.target_mc]; 
+0

注意評論你的代碼?爲什麼添加該行將有助於OP?它是如何工作的?評論將有助於獲得更好的答案,以便其他人可以從中受益 – Yaroslav