Извлечение объектов с заднего плана

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
graf8787
Сообщения: 7
Зарегистрирован: 01 сен 2013, 13:47

Извлечение объектов с заднего плана

Сообщение graf8787 »

Во многих играх в контакте вижу следующую плюшку:
при наведении на объект (скажем дом) который находится за другим объектом (пускай дерево) выделяется дом, хотя курсор был наведен, как бы на дерево. Подскажите в какую сторону думать и куда копать, а то для гугла не могу сформулировать вопрос, а своих идей что-то совсем нет - с графикой мало опыта работы.

И еще один вопрос по смежной теме. скажем есть карта из n*n ячеек. Допустим z индекс объекта по формуле xPosMap+yPosMap*xSize. Лучшая мысль которая есть: хранить где-нить значение и полностью пересчитывать весь порядок дочерних объектов при:
добавлении нового
изменении позиции одного из детей
Может быть есть лучше идеи?
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Извлечение объектов с заднего плана

Сообщение sasha^ »

mouseEnabled = false но это если просто....
а если изометрия(насколько я понял из описания) - то писать движок для этого.... но суть - сделать чтобы дерево, например не реагировало на наведение мыши или, например, чтобы уходило на задний план(z-сортировка) при наведении на него, если зади домик...

насчет изменения детей - пожалуй, правильно, но можно улучшить алгоритм, например, можно пересчитывать только слоя выше от текущего при каких-то ситуациях и т.д.
graf8787
Сообщения: 7
Зарегистрирован: 01 сен 2013, 13:47

Re: Извлечение объектов с заднего плана

Сообщение graf8787 »

эгегегей!
Я же говорил, что у меня очень туго с графикой?! XD
Изометрия! Вот слово которого мне не хватало для общения с гуглом!

Огромное спасибо
mastaxys
Сообщения: 32
Зарегистрирован: 12 янв 2013, 14:41

Re: Извлечение объектов с заднего плана

Сообщение mastaxys »

Доброго времени суток, задам свой вопрос здесь же...

У меня похожая ситуация, только создаются три клипа, на MouseDown`е висит функция:

Код: Выделить всё

function stopDraging(e:MouseEvent):void        {                   e.currentTarget.startDrag();            // e.currentTarget.z = level_Z + 1;        }
Нужно чтобы когда ухватили за клип, он оказался "выше" остальных двух. Понимаю что возможно решение простое, НО пока не нашёл его )))
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Извлечение объектов с заднего плана

Сообщение sasha^ »

mastaxys, решение очень простое.... их много... но самое простое - снова addChild, он при повторном вызове(если уже есть ребенок) - добавляет его поверх всех...

Код: Выделить всё

// cont - контейнер всех 3-х клиповcont.addEventListener(MouseEvent.CLICK, startDrag);cont.addEventListener(MouseEvent.CLICK, stopDrag);function startDrag(e:MouseEvent):void {    // у спрайтов уже есть методы перетаскивания    // ps. movieclip extends sprite    var obj:Sprite = Sprite(e.target);    // у родителя изменяем позицию этого объекта...    // можно и так(но толку с этого нет, в данном случае addChild - идентичен)     // obj.parent.setChildIndex(obj, obj.parent.numChildren-1);    obj.parent.addChild(obj);    obj.startDrag();}function stopDrag(e:MouseEvent):void {    var obj:Sprite = Sprite(e.target);    obj.stopDrag();}
mastaxys
Сообщения: 32
Зарегистрирован: 12 янв 2013, 14:41

Re: Извлечение объектов с заднего плана

Сообщение mastaxys »

sasha^ , спасибо... Для меня оказалась актуальной лишь одна строка :

Код: Выделить всё

obj.parent.setChildIndex(obj, obj.parent.numChildren-1);
Так что, Благодарю!
Ответить