ActionScript Mouse проблема с событием - PullRequest
0 голосов
/ 15 февраля 2010

Я пытаюсь реализовать следующий элемент управления для объекта movieclip. Когда указатель мыши находится над объектом и если щелкнуть и удерживать нажатой левую кнопку мыши, маска, перекрывающая объект movieclip, начинает исчезать. Я пробовал MouseEvent.DOWN и т. Д., Но мне не удалось реализовать эту функцию. Вероятно, я что-то пропустил. Могу ли я добиться этого с помощью стандартных типов событий мыши или мне нужно реализовать это по-другому? Кроме того, возможно ли вместо этого затемнить маску, уменьшив атрибут alpha, чтобы фактически заставить исчезать пиксели, которые находятся под указателем мыши?

1 Ответ

0 голосов
/ 15 февраля 2010

MouseEvent.MOUSE_DOWN / Mouse.MOUSE_UP действительно события, которые нужно использовать, поэтому в вашем коде больше всего проблем.

Часто случается, что это событие не вызывается из-за перекрытия объектов, и я подозреваю, что в этом случае это может быть маска. Если это так, вы можете просто отключить mouseEvents на препятствующих объектах display с помощью mouseEnabled = false.

Пример:

var background:Sprite,
    foreground:Sprite; // Note: could be MovieClips of course !

// adds a sprite with a pink circle
addChild(background = new Sprite());
background.graphics.beginFill(0xff0099);
background.graphics.drawEllipse(0,0,100,100);

// adds a sprite containing a black box and adds it on top of the circle
addChild(foreground = new Sprite());
foreground.graphics.beginFill(0x000000);
foreground.graphics.drawRect(0,0,100,100);

background.buttonMode = true; // not necessary, just adds the handcursor on rollover to let you debug easier.
foreground.mouseEnabled = false; // the foreground is not clickable anymore, which makes the background clickable


background.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);

function onMouseUp(e:Event):void
{
    foreground.visible = 0; // I let you do the animation here ; )
}

Несколько быстрых советов относительно пикселя под курсором:

Вы можете сделать это с Bitmap объектом. Координаты пикселей можно получить с помощью mouseX, mouseY (обратите внимание, что растровые объекты не отправляют события мыши, поэтому вам необходимо добавить их в спрайт для использования в качестве оболочки). Вы можете получить фактический цвет / альфа-значение пикселей с помощью getPixel32 и изменить его с помощью setPixel32 .

Если у вас возникли проблемы, я предлагаю вам открыть для этого отдельный вопрос.

Надеюсь, это поможет, Т.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...