Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   addEventListener и Event (http://www.flasher.ru/forum/showthread.php?t=170873)

Inet_PC 04.11.2011 21:33

Цитата:

Ну, в том, что касается ас3, они и есть истина первой инстанции =)
Это я про то, что даже они не всегда правильно делают, имхо конечно же.

Vektor 05.11.2011 01:56

У меня возник другой вопрос.
Есть два мсКлипа наложенные друг на друга.
Код AS3:

this.addEventListener(MouseEvent.MOUSE_UP,fMoveUP);
private function fMoveUP(e:MouseEvent):void {
        trace(e.target.x)//Верхний
        trace(e.target.y)//Верхний
}

Я могу как-нибудь узнать координаты нижнего мсКлипа.

strangedk 05.11.2011 02:17

Первое что пришло в голову - поместить их в один спрайт, и потом перебрать getChild'ом

Код AS3:

for (var i:int=0; i < this.numChildren; ++i) {
        var object:DisplayObject = getChildAt(i);
        var coords:String = String(object.x + ":" + object.y);
        trace(object + "coords: " + coords);
}

Естественно, метод действенный только в случае возможности объединения необходимых объектов, в один контейнер.

Vektor 05.11.2011 02:54

Цитата:

Естественно, метод действенный только в случае возможности объединения необходимых объектов, в один контейнер.
Нет, нельзя.

strangedk 05.11.2011 03:26

Вы бы объяснили в каком контексте эта задача, авось и нашли бы решение. А так просто непонятно куда думать.

Vektor 05.11.2011 10:06

Я думал, может есть простой путь типа
Код AS3:

this.addEventListener(MouseEvent.MOUSE_UP,fMoveUP);
private function fMoveUP(e:MouseEvent):void {
        trace(e.target.?????.x)//Нижний
        trace(e.target.?????.y)//Нижний
}

А обходной, я сам, написать могу.
P.S - Что собственно уже и сделал.

Inet_PC 05.11.2011 10:48

Так добавьте в e.tatget ссылку на "нинжний". И будет именно, как Вы написали, только откастить нужно будет.

strangedk 05.11.2011 12:52

Цитата:

Сообщение от Vektor (Сообщение 1043867)
Я думал, может есть простой путь
А обходной, я сам, написать могу.
P.S - Что собственно уже и сделал.

Если сделал, поделись с другими.
Неправильно задавать вопрос на форуме, потом находить ответ, и писать что-то типа "Всё, я решил проблему".

Форум же люди читают, выкладывайте решение.

Vektor 05.11.2011 16:36

Тут всё просто, нижнии нужно поместить в массив.
Код AS3:

this.addEventListener(MouseEvent.MOUSE_MOVE,fMove);
private function fMove(e:MouseEvent):void {
  trace(e.target.x)//Верхний
  trace(e.target.y)//Верхний
  for (var i:uint=0; i<=amcClip.length-1; i++) {
    if (amcClip[i].hitTestPoint(mouseX,mouseY)) {
        trace(amcClip[i])//Нижний
        trace(amcClip[i].y)//Нижний
        break;
    }
  }
}

Это нужно когда таскаешь клип, а тебе надо знать какие клипы находятся под курсором.
Если, есть другие варианты, Предлагайте!

strangedk 10.11.2011 02:58

Цитата:

Если, есть другие варианты, Предлагайте!
getObjectsUnderPoint

Но с ним тоже вроде имеются какие-то проблемы


Часовой пояс GMT +4, время: 22:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.