【问题标题】:ActionScript 3 Selecting a MovieClipActionScript 3 选择影片剪辑
【发布时间】:2014-09-19 08:20:00
【问题描述】:

我的情况是这样的: 我在舞台上有几个 (2+) 影片剪辑。 除了背景之外,每个都包含一个输入文本框。

当我单击第一个 MovieClip 时,它被选中并显示一个浅蓝色阴影以表示它:http://puu.sh/aueAw/3575e83aca.png

如果我点击第二个,它看起来像这样:http://puu.sh/aueEj/826e1c9cb9.png

然而,当第二个影片剪辑的文本框被点击时,第一个影片剪辑被选中!这对我来说没有任何意义。

这可能是什么原因造成的?只要我不考虑这些嵌套的文本框,一切都会正常运行。

提前感谢您的有用回答!

最好的问候, 奥林 K.

编辑:这是我用来向 MovieClips 添加事件侦听器的代码。

public function updateVisualDocument()
{
        if (!uniDocument.isEmpty())
        {
            //Update the Visual Document if the current Document contains any pages
            visualDocument.uniPage.gotoAndStop(uniDocument.getCurrentPage().getLayout());
            visualDocument.uniPage.pageNumber.text = uniDocument.getPageIndex();

            //Update Thumbnails
            for each (var someThumb in thumbnailArray)
            {
                someThumb.deselect();
            }
            thumbnailArray[uniDocument.getPageIndex() - 1].select();

            for (var i:int = 0; i < visualDocument.uniPage.panelContainer.numChildren; i++)
            {
                var somePanelMC = visualDocument.uniPage.panelContainer.getChildAt(i);
                if (!uniDocument.getCurrentPage().hasPanels())
                {
                    uniDocument.getCurrentPage().addPanel(somePanelMC);
                }
                somePanelMC.addEventListener(MouseEvent.CLICK, panelClicked);

                uniDocument.getCurrentPage().getPanel(i).setPanelMC(somePanelMC);

                function panelClicked(e:Event)
                {
                    //Panel gets selected
                    var panelIndex:int = int(e.target.name.substring(5));
                    uniDocument.getCurrentPage().deselectAllPanels();
                    uniDocument.getCurrentPage().getPanel(panelIndex).select();
                }
            }
            uniDocument.getCurrentPage().panelsAreFull();
            uniDocument.getCurrentPage().selectFirst();
        }
    }

编辑:我尝试将文本框更改为动态文本(来自输入文本)类型,但问题仍然完全相同。我单击文本框,它选择了第一个 MovieClip。我认为这可能与使用相同的实例名称有关,但既然它是嵌套的,为什么要重要?

【问题讨论】:

  • 任何人都可以帮助你,你将展示你正在使用的代码,它会出现这个问题。
  • 您是否不小心给了他们相同的实例名称?
  • @LDMS,文本框都是“myText.text”,但面板的实例名称为“Panel1”、“Panel2”、“Panel3”等。在我在原帖中提供的屏幕截图中,只有两个面板,但面板可以不止两个(取决于布局),每个布局都会出现这个问题。

标签: actionscript-3 flash actionscript textbox movieclip


【解决方案1】:

看来是我自己想出来的。部分。我处理了 LDMS 在他的评论中所说的“你是否不小心给了他们相同的实例名称?”

嗯,不,我没有。但是-文本框都具有相同的实例名称。这无关紧要,但它让我专注于文本框的名称,我意识到由于我将 mouseChildren 设置为 false,文本框是触发事件侦听器的文本框。

所以我修改了一些代码,如下所示:

function panelClicked(e:Event)
{
    //Panel gets selected
    if (!e.target.name == "myText")
    {
        var panelIndex:int = int(e.target.name.substring(5));
        uniDocument.getCurrentPage().deselectAllPanels();
        uniDocument.getCurrentPage().getPanel(panelIndex).select();
    }
}

现在它可以工作了!这是一个简单的解决方法,因为myText.mouseEnabled = false; 不是一个选项,因为它需要被点击。

希望这对将来的某人有所帮助!干杯!

【讨论】:

    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2013-06-21
    相关资源
    最近更新 更多