创建XML文件在Flash CS3中的动态导航文件、动态、XML、Flash

2023-09-09 21:57:49 作者:动了情的痞子

我想用手一个XML文件到SWF和有瑞士法郎产生一个动态文本框和按钮,每一个在XML文件中的链接

I want to hand an xml file to a swf and have the swf generate a dynamic text box and button for each of the links in the xml file

一个基本的导航

这里的XML

<?xml version="1.0" encoding="UTF-8"?>
    <page>
    <page name="Page Name 1" url="/page-1/" />
    <page name="Page Name 2" url="/page-2/" />
    <page name="Page Name 3" url="/page-3/" />
    <page name="Page Name 4" url="/page-4/" />
    </page>

和我的FLA我在图书馆的一个按钮命名为nav_button

and in my fla I have a button in my library named 'nav_button'

有一个名为层的行动和在第1帧我有这样的

there's a layer named actions and in frame 1 I have this

var xml:XML;
var xmlList:XMLList;
var xmlLoader:URLLoader = new URLLoader();

var button:Button = new Button();


xmlLoader.load(new URLRequest("links.xml"));

xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event):void
{
xml = XML(event.target.data);
xmlList = xml.children();
trace(xml.length());

for(var i:int = 0; i < xmlList.length(); i++)
{
    button = new Button();
    button.x = 25;
    button.y = i * 50 +25; 
    addChild(button);
}
}

在XML进口很好,但是当它涉及到的for循环和添加按钮和文本框的阶段,我举杯

the xml imports fine, but when it comes to the for loop and adding the buttons and text boxes to the stage, I'm toast

推荐答案

您的XML文件是无效的。它只能包含一个根节点。

Your xml file is invalid. It can only contain a single root node.

试试这个:

<?xml version="1.0" encoding="UTF-8"?>
<pages>
<page name="Page Name 1" url="/page-1/" />
<page name="Page Name 2" url="/page-2/" />
<page name="Page Name 3" url="/page-3/" />
<page name="Page Name 4" url="/page-4/" />
</pages>

这是在code你的第一个框架:

This is the code for your first frame:

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
xmlLoader.load(new URLRequest("links.xml"));

function xmlLoaded(event:Event):void {
    var pages:XML = new XML(event.target.data);
    var i:int = 0;
    for each (var page:XML in pages.page) {
        var button:LinkButton = new LinkButton();
        button.x = 25;
        button.y = i * 50 + 25; 
        button.label = page.attribute("name");
        button.url = page.attribute("url");
        addChild(button);
        trace(i++);
    }
}

和你需要一个自定义按钮:

And you'll need a custom button class:

package {
    import fl.controls.Button;
    import flash.events.MouseEvent;
    import flash.net.URLRequest;
    import flash.net.navigateToURL;

    public class LinkButton extends fl.controls.Button {
        public var url:String;
        public function LinkButton(){
            super();
            this.addEventListener(MouseEvent.CLICK, clickHandler);
        }
        private function clickHandler(mouseEvent:MouseEvent) {
            flash.net.navigateToURL(new URLRequest(url), "_blank");
        }
    }
}

也许我需要解释的更详细一点:

Maybe I need to explain this in a bit more detail:

创建一个新的Flash文件(按Ctrl-N ) 打开组件面板(按Ctrl-F7 ) 打开库面板(按Ctrl-L ) 将部件>用户界面>按钮库 选择第一帧 打开动作面板( F9 ) 在这里贴code中的第一位 在保存文件(按Ctrl-S ) 创建一个新的ActionScript文件(按Ctrl-N ) 在这里贴code中的第二位 在同一文件夹将文件保存为LinkBut​​ton.as(按Ctrl-S ) 回到你的电影( Ctrl-Tab组合) 测试影片(按Ctrl-输入) create a new Flash File (Ctrl-N) open the Components panel (Ctrl-F7) open the Library panel (Ctrl-L) drag Components > User Interface > Button to Library Select the first frame open the actions panel (F9) paste the first bit of code here Save your file (Ctrl-S) create a new ActionScript File (Ctrl-N) paste the second bit of code here Save your file in the same folder as "LinkButton.as" (Ctrl-S) Go back to your Movie (Ctrl-Tab) test the movie (Ctrl-Enter)

我强烈建议你采取一些更多的训练。 李Brimelows网站是一个良好的开端。

I strongly recommend you take some more training. Lee Brimelows site is a good place to start.

 
精彩推荐
图片推荐