ActionScript 3 选择影片剪辑
Posted
技术标签:
【中文标题】ActionScript 3 选择影片剪辑【英文标题】:ActionScript 3 Selecting a MovieClip 【发布时间】: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”等。在我在原帖中提供的屏幕截图中,只有两个面板,但面板可以不止两个(取决于布局),每个布局都会出现这个问题。 【参考方案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;
不是一个选项,因为它需要被点击。
希望这对将来的某人有所帮助!干杯!
【讨论】:
以上是关于ActionScript 3 选择影片剪辑的主要内容,如果未能解决你的问题,请参考以下文章
无法将其他 Flash 影片剪辑访问到 Actionscript 3