2011-12-06 94 views
0

我正在尝试制作一个vieport,您可以通过拖动背景图像进行平移。防止触发事件从另一个精灵下触发

这里是我做了什么:http://students.info.uaic.ro/~tudor.berechet/0sandbox/aperture/science/testing/fatChance.html

请注意,我已经隐藏鼠标光标和2个自定义的取代了它。

问题是,附加到背景的事件是一个触摸事件,即使鼠标位于该背景前面的sprite/movieclip(猴子或属性)上时也会触发事件。并且统计数据甚至不在游戏图层中(猴子和bg以及鼠标光标所在的位置)。尝试拖动统计数据,并看到背景和其他一切东西(这是不需要的)。此外,我需要删除自定义光标,并在鼠标不在背景上时显示常规光标(即,当它位于猴子或统计信息上或将来可能有/将有的任何新的精灵)。

现在我在一段时间内还没有使用flash,而且我并不是专家,但是这种事件发生的正常行为无论发送者是否被其他东西埋没?

我该如何去改变这种行为?

PS:我已将源代码附加到上面链接中的.swf。此外,如果这与任何事情有关,我使用Starling作为我的GameLayer。

[编辑2] 看来我还没有弄清楚自己。我只希望舞台可以拖动IFF鼠标直接在背景上。每当鼠标和背景之间存在精灵时,背景事件都不应该激发,因此我可以更改光标并与所述精灵进行交互。

+0

我找不到源代码? –

+0

@Lars右键单击>查看源代码,或转到此处:http://students.info.uaic.ro/~tudor.berechet/0sandbox/aperture/science/testing/srcview/index.html – Spectraljump

+1

由于您提到是新手闪光灯,你有没有尝试玩你的movieclips/sprites的mouseChildren和mouseEnabled属性? – Frank

回答

2

如果你想让事件不通过猴子,你可以使用stopPropagation()。因此,向猴子添加(或更新)一个事件监听器,并对其进行编辑,以使e.stopPropagation()成为事件处理程序的第一行。

private function _touchHandler(e:TouchEvent):void 
{ 
    e.stopPropagation(); 
    // any other code for touching your monkey :P ... 
} 

对于任何其他想要停下来的事件,都要做同样的事情。

+0

谢谢KreeK提及'stopPropagation()'。我很愚蠢,甚至没有想到“传播”这个词! :)它对猴子来说工作得很好。但它对于'stats'来说很奇怪。手(假)游标仍然在'stats'下移动,鼠标指针不显示。但是,如果拖动'stats',它拖动时不拖动背景(并且手保持在后面)。但是一旦你拖动背景,再次拖拽'stats'会恢复拖拽本身和背景的错误方式。我更新了我的链接和来源。 'Stats'在'StarlingIntro.as'中。 – Spectraljump

相关问题