XML Flash播放器

时间:2011-07-13 10:15:38

标签: xml flash actionscript-2

我想放一个读取XML的flash图片库,并在我的网站上显示相关图片,但是我喜欢能够以编程方式使用其ID在我的XML中以某个幻灯片形式获取。例如,我的XML有x个幻灯片(我刚刚复制并粘贴了幻灯片并更改了id)。作为一个例子,id喜欢获得id为2的幻灯片元素。 如果我在XSLT中使用XPath,我会做类似“location / image_gallery / slideshow [@id = 2]”的内容。

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

};

2 个答案:

答案 0 :(得分:0)

_xmlContainer.imageGallary.slideshow @ ID [0];

尝试这个。

答案 1 :(得分:0)

添加此行

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

低于此行

next_mc = _root.myClips_array[_root.target_mc];