Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何使用AS3在Flash中单击显示对象?_Actionscript 3_Image Manipulation_Flash Cs3 - Fatal编程技术网

Actionscript 3 如何使用AS3在Flash中单击显示对象?

Actionscript 3 如何使用AS3在Flash中单击显示对象?,actionscript-3,image-manipulation,flash-cs3,Actionscript 3,Image Manipulation,Flash Cs3,我正在创建一个照片编辑器应用程序,在这个应用程序中,您编辑的照片应该放在两层显示对象(背景图像和图像遮罩)之间 不过,有一个问题。当您正在编辑的图像被放置在背景层和图像遮罩层之间时,它将变得不可拾取,因此会被卡住,无法再次拖动。(照片编辑器使用TransformManager库。) 我正在寻找一种方法,允许您选择您正在编辑的图像,无论上面是否有另一个DisplayObject。这可能意味着找到某种方法来点击图像遮罩 有办法吗 我尝试在imageMask上设置mouseChildren=false

我正在创建一个照片编辑器应用程序,在这个应用程序中,您编辑的照片应该放在两层显示对象(背景图像和图像遮罩)之间

不过,有一个问题。当您正在编辑的图像被放置在背景层和图像遮罩层之间时,它将变得不可拾取,因此会被卡住,无法再次拖动。(照片编辑器使用TransformManager库。)

我正在寻找一种方法,允许您选择您正在编辑的图像,无论上面是否有另一个DisplayObject。这可能意味着找到某种方法来点击图像遮罩

有办法吗

我尝试在imageMask上设置mouseChildren=false,但没有达到预期效果


非常感谢。

我想我在as2中也遇到了类似的问题

在flash中,当您将电影剪辑放置在电影剪辑上,并且顶部的电影剪辑实现了任何鼠标事件时,它将捕获所有鼠标事件,以便它们永远不会到达被遮挡的电影剪辑


解决方案是不为顶部电影剪辑设置任何鼠标事件,将电影剪辑放置在底部捕获鼠标事件,并将其中一些事件重定向到顶部电影剪辑(您可以使用hitTest检查鼠标位置,以确定是否应重定向这些事件)。

您始终可以将鼠标单击侦听器连接到容器,然后使用GetObjectsUnderPoint检查对象,或者进行点击测试,查看鼠标位置是否在预期对象上方

命中测试看起来像这样
!this.YourPhoto.hitTestPoint(stage.mouseX、stage.mouseY、false)


b

看看Seneyual做了什么,特别是在handleUpdate方法中。基本上是:在鼠标点下列出所有东西以找到你的对象。

这个怎么样


mask.mouseEnabled=false

如果我理解您的问题,这个方便的类应该可以解决它:

我遇到了类似的问题,我设法用这两种方法解决了它

 displayobject.mouseChildren = false;  


在你想要点击的对象上。

我使用了一个奇怪的bug

movieClip.mouseEnabled = false;
但是因为某种原因没有工作。。我快疯了!!因为我以前用过很多次。尝试了很多不同的东西都没用,然后我删除了电影剪辑,然后创建了一个新的并成功了。。因此,MovieClip的内容一定已损坏或其他原因,因为它在MovieClip中嵌入了一个旧的动态文本区域框


希望这有助于其他人

如果不需要用鼠标控制遮罩,则此解决方案优于所选答案。
movieClip.mouseEnabled = false;