首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >作为MovieClip对象返回的Flex 4图像对象

作为MovieClip对象返回的Flex 4图像对象
EN

Stack Overflow用户
提问于 2012-04-25 21:23:50
回答 3查看 323关注 0票数 0

我正在处理Flex4中的自定义上下文菜单。上下文菜单本身运行良好,但我正在寻找一种方法来判断ContextMenuEvent mouseTarget是否是图像。按照原样,mouseTarget显示它是一个"object MovieClip“。这很奇怪,因为我的应用程序中没有电影剪辑,只有图像容器。知道这是怎么回事吗?

代码语言:javascript
运行
复制
private function openContextMenu(e:ContextMenuEvent):void {
    Alert.show(e.mouseTarget.toString());// shows [object MovieClip] when it should show [Object Image]
}

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-26 08:31:04

您需要将镜像上的mouseChildren设置为false,然后MouseEvent将引用该镜像:

代码语言:javascript
运行
复制
if (event.target is Image) {
   //do stuff
}
票数 0
EN

Stack Overflow用户

发布于 2012-04-26 05:46:18

因此,经过几个多小时的研究,我想出了以下附加到contextMenu的item select event listener的内容。我相信一定有更好的方法,但在那之前...

代码语言:javascript
运行
复制
for(var i:int = 0; i < getObjectsUnderPoint(new Point(this.mouseX, this.mouseY)).length; i++)
{
    if(getObjectsUnderPoint(new Point(this.mouseX, this.mouseY))[i].parent.parent is Image)
    {
        //do what I need to do
    }
}

感谢NHubben提供的意见。它让我走上了看孩子的正确道路。

票数 0
EN

Stack Overflow用户

发布于 2012-04-26 07:49:37

组件名称Image与组成它的内容无关。flex继承是: Image -- SWFLoader -- UIComponent -- FlexSprite -- ...

因此,您需要做的是在将其引入AS3环境时了解您实际拥有的内容。它似乎被包装在一个MovieClip中,以允许它出现在Flash的显示列表中。看起来你也必须通过加载程序,但我不确定这一点。

运行一个测试或两个测试,找出对象的实际组成:

代码语言:javascript
运行
复制
// not foolproof, and will break on some stuff, 
// so you will have to fix this as needed:
private function loopDisplay(obj:Sprite):void
{
    trace(obj.name + ": " + obj);
    if (obj.numChildren > 0)
    {
        for (var i:int = 0; i < this.numChildren; i++)
        {
            loopDisplay(obj.getChildAt(i));
        }
    }
}

如果您将其放入鼠标按下处理程序中,则可以看到实际存在的内容。

但是,event.targetevent.currentTarget还应该包含菜单项对象,因此您还可以循环访问这些对象并查看其中的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10316638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档