Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Перекрывание объекта (http://www.flasher.ru/forum/showthread.php?t=187767)

Fartoviy_Spec 23.11.2012 21:02

Перекрывание объекта
 
Есть 2 объекта. Один частично накрыт другим. по клику мышкой по нему в области не перекрывающей, происходит вызов функции, а по клику в области где перекрывает другой объект не происходит вызов функции.
Код AS1/AS2:

var a1:BitmapData = new BitmapData(80,80,true,0x80FF3300);
var b1:Bitmap = new Bitmap(a1);
var c1:MovieClip=new MovieClip();
c1.addChild(b1);
addChild(c1)
c1.y=25
c1.addEventListener(MouseEvent.MOUSE_DOWN, onMD);
 
var a2:BitmapData = new BitmapData(80,80,true,0xFF0450FF);
var b2:Bitmap = new Bitmap(a2);
var c2:MovieClip=new MovieClip();
c2.addChild(b2);
addChild(c2)
 
function onMD(e:Event):void
{
        trace(e.currentTarget);
}

Как сделать, чтобы при клике на область где есть объект, но его перекрывает другой все равно объект улавливал клик?

Korchy 23.11.2012 21:10

Сделать свой hitTest и через hitTestPoint смотреть, на какой конкретно объект попала точка клика.

Fartoviy_Spec 23.11.2012 21:12

Так она попадает естественно на верхний объект, а нужно чтобы улавливал клик под ним который находится

Korchy 23.11.2012 21:15

Я делал так:
- перехватывал клик
- получал все объекты под точкой клика (getObjectsUnderPoint)
- начиная с верхнего искал первый, на котором точка клика непрозрачна (hitTestPoint)
- отправлял событие клик полученному объекту

Fartoviy_Spec 23.11.2012 21:18

спасибо, щас попробую, а вот 4 пункт, как это отправить событие объекту?

Korchy 23.11.2012 21:26

dispatchEvent(new MouseEvent(MouseEvent.CLICK))

silin 23.11.2012 21:44

а по простому ?
Код AS3:

c2.mouseEnabled = false;


Fartoviy_Spec 23.11.2012 22:01

Спасибо. И первый вариант получился, но второй гораздо проще)

Nickolai 23.11.2012 22:21

У меня кастате тоже такая проблема, но вот
Код AS1/AS2:

NumberPage1 = visual.NumberPage1;
NumberPage1.addEventListener(MouseEvent.CLICK, btnClickHandler);
NumberPage1.mouseEnabled = false;

Ничего не катит...(

silin 23.11.2012 22:31

>> Ничего не катит...(
осмелюсь предположить, что у тебя мешает не c2 (это был мувик из примера Fartoviy_Spec), а кто-то другой, вот ему и надо запретить реагировать на мышь


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

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