制作相互连接的菜单链接

时间:2012-04-15 17:14:28

标签: flash actionscript menu hyperlink connect

我有一堆菜单窗口,我放在不同的框架上(例如主菜单在第1帧,第2帧的选项菜单,第3帧的章节菜单,第4帧的字符菜单等)。在每个菜单上有一堆文本链接(movieclip实例),当点击进入另一个菜单页面时。这些相同链接中的一些(相同实例)在多个页面上重复,因为它们执行相同的功能。例如,单击“backToMain”实例将返回到第1帧,即主菜单,无论点击哪个页面。

有没有人知道如何构建它?到目前为止,我已经尝试将侦听器添加到每个链接,但是由于许多链接位于帧1以外的不同帧上,所以我不能添加侦听器,直到我告诉actionscript翻转到该帧,我不知道我想做。我想在一开始就全局地向所有链接添加监听器:

var linksArray:Array = [newStory, continueStory, options, characters, backToMain, backToOptions, ... etc];

for each (var link:MovieClip in linksArray) {
link.addEventListener(MouseEvent.CLICK, onClick);
}

function onClick(e:MouseEvent):void
            {
                if (e.target.name == "newStoryLink") {

                    delegate.beginStory();

                } else if (e.target.name == "continueStory") {

                    // do something else
                } else if (e.target.name == "chapters") {

                    // do something else
                } else if (e.target.name == "options") {

                    // do something else
                }

上面的代码不起作用,因为如上所述,我无法将侦听器添加到其他帧上存在的实例。该代码基本上告诉AS在单击任何链接时要执行的操作,无论我在哪个框架上或单击该链接的哪个实例。 感谢。

1 个答案:

答案 0 :(得分:0)

以上是我对上述评论的意思。我刚刚在一个空的Flash文件中尝试了以下内容:

  • 第1帧:空关键帧/部分内容
  • 第10帧:带有名为“someButton”的按钮的关键帧

  • 第1帧:以下代码:

            import flash.events.MouseEvent;
    
            stage.addEventListener(MouseEvent.CLICK, onClick);
    
            function onClick(e:MouseEvent):void {
    
                if (e.target.name == "someButton")
                    trace("Button clicked");
    
            }
    

就是这样。如果单击第10帧上的按钮,则会显示消息。

这是有效的,因为Flash使用冒泡事件模型,这意味着显示对象(例如按钮)上的大多数(任何?)事件也会传递给父母,父母等等。所以最终,{来自按钮的{1}}事件到达阶段,由CLICK事件处理程序处理。在那里,我们检查来自(onClick)的事件来自的对象是否Event.target等于name

在我放置someButton的地方,您只需在单击菜单项时输入逻辑。 这是您正在寻找的功能吗?

请注意,您无需摆弄trace属性,例如stagebuttonMode等。只需使用上面的代码作为起点。