PDA

Просмотр полной версии : Как сделать так, чтобы событие происходило только при щелчке на пустой области?


Сандра
24.12.2007, 20:27
Добрый день,

на сцене существует экземпляр клипа ClickCatcher, который выглядит примерно так:

class ClickCatcher extends MovieClip {
var clipNum:Number = 0;

function ClickCatcher(){
super();
}

function onMouseUp(){
trace("creating new movie clip");
var clip:MovieClip = _root.attachMovie("MyClip", "clip" + clipNum, _root.getNextHighestDepth());
clip._x = _root._xmouse;
clip._y = _root._ymouse;
clipNum++;
}
}

Задача простая - создать экземпляр нового клипа в том месте, где щелкает пользователь. У меня получилось, но почему-то это событие onMouseUp также происходит и на созданных таким образом клипах. Как сделать так, чтобы событие происходило только при щелчке на пустой области (а пустая область это экземпляр ClickCatcher) и не происходило на вновь созданных клипах?

chingachgoog
24.12.2007, 20:36
Видимо вопрос в том, чтобы приаттаченные клипы не залезали друг на друга? Тогда надо при событии onMouseUp проверять hitTest со всеми мувиками на _root и если не пересекается, то аттачить.
Или еще удобнее - аттачить и тут же проверять hitTest, если пересекается - то удалить аттач (надо только проверить, не требуется ли переход головки, для корректной работы hitTest).

udaaff
24.12.2007, 20:40
onMouseUp -- глобальное событие. Можно использовать вместо onMouseUp, onRelease. У мувиков, которые будут над экземепляром ClickCatcher, прописать:
onRelease = null;
useHandCursor = false;