2011-07-13 44 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