我希望有人可以帮我解决这个动作脚本(2)
我想将图像加载到我的flash文件中,然后使用xml文件从文件夹中分配图像 - 然后将其链接到xml中的url
xmlData = new XML(); xmlData.ignoreWhite = true; xmlData.onLoad = function(loaded) { if (loaded) { loadMovie(_root.imagePath = this.firstChild.childNodes[0].childNodes[1].firstChild.nodeValue, imageLoader); loadMovie(_root.imageurl = this.firstChild.childNodes[0].childNodes[1].firstChild.nodeValue, imageLoader); imagePath.text =
_root.imagePath; imageurl.text = _root.imageurl; } else { trace("file not loaded!"); } }; xmlData.load("/flash/languages.xml");
这是我的xml文件:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <myImage> <imagePath>/flash/image1.jpg</imagePath> <imageurl>/flash/image1.html</imageurl> </myImage> <myImage> <imagePath>/flash/image2.jpg</imagePath> <imageurl>/flash/image2.html</imageurl> </myImage> <myImage> <imagePath>/flash/image3.jpg</imagePath> <imageurl>/flash/image3.html</imageurl> </myImage>
答案 0 :(得分:0)
尝试:
imageurl.htmlText = '<a href="'+_root.imageurl+'">image link</a>';
如果您使用带有IDE的舞台上绘制的TextField,请确保打开HTML(&lt;&gt;按钮)。应该是它。
祝你好运!答案 1 :(得分:0)
没有为你做,一般的想法是这样的:
var nodes:Array = xmlData.childNodes;
var l:Number = nodes.length;
var currNode:XMLNode = null;
var mv:MovieClip
for( var i:Number = 0; i < l; i )
{
currNode = nodes[ i ].firstChild;
mv = ?? //use createEmptyMovieClip or a stage instance, or some such.
mv.loadMovie( currNode.nodeValue );
// You may need to futz with this line, but it should work.
mv.onRelease = function(){ getURL( currNode.nextSibling.nodeValue ) }
}
这是一个有用的主题。 http://www.photoshopcafe.com/cafe/viewthread.php?tid=44914
答案 2 :(得分:0)
我会使用MovieClipLoader,因为当你想要在加载后将特征分配给MovieClip(或本例中的图像)时,它会有更好的事件处理。
此代码未经过测试。这段代码也不完整!这只是给你一个想法。你会注意到那里的一些评论,我告诉你,你必须自己布置你的图像。也就是说,您将需要考虑图像的大小,并在加载后调整每个_x和_y。
另一件事是,当您在Flash IDE中按CTRL + ENTER进行测试时,这不会很有效,因为它使用根相对URL来表示您的图像和链接。由于Flash IDE未在Web服务器上运行,因此无法找到您的图像!您可能希望在Flash IDE中进行调试时使用特殊的测试XML文件。
此外,请确保XML中有根节点。没有根节点只是简单的坏XML。
<强> XML 强>
<?xml version="1.0" encoding="utf-8"?>
<root>
<myImage>
<imagePath>/flash/image1.jpg</imagePath>
<imageurl>/flash/image1.html</imageurl>
</myImage>
<myImage>
<imagePath>/flash/image2.jpg</imagePath>
<imageurl>/flash/image2.html</imageurl>
</myImage>
<myImage>
<imagePath>/flash/image3.jpg</imagePath>
<imageurl>/flash/image3.html</imageurl>
</myImage>
</root>
动作脚本(第1帧):
var xmlData:XML = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = function(loaded) {
if (loaded) {
for(var i = 0; i < this.firstChild.childNodes.length; i++) {
var mc:MovieClip = _root.createEmptyMovieClip("item" + i, _root.getNextHighestDepth());
var node:XMLNode = this.firstChild.childNodes[i];
loadMovieClip(mc, node);
}
} else {
trace("file not loaded!");
}
};
xmlData.load("/flash/languages.xml");
function loadMovieClip(mc:MovieClip, node:XMLNode) {
var loadListener:Object = new Object();
loadListener.onLoadInit = function(target:MovieClip, httpStatus:Number) {
//Be sure to do your positioning here!!! You probably
// don't want to stack them on top of each other.
// I didn't do that so you'll have to do it yourself.
target._x = 30;
target._y = 30;
var url = node.childNodes[1].firstChild.nodeValue;
target.onMouseUp = function() {
getURL(url);
}
//be sure to do positioning of your text field too.
var txt:TextField = _root.createTextField(target._name + "_text", _root.getNextHighestDepth(), 30, 100, 100, 20);
txt.text = url;
txt.type = "static";
txt.onMouseUp = function() {
getURL(url);
}
}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(loadListener);
mcl.loadClip(node.childNodes[0].firstChild.nodeValue, mc);
}
我希望有所帮助。