AS3: определение области попадания - PullRequest
8 голосов
/ 11 октября 2011

У меня есть мувиклип, который содержит растровое изображение, и я не хочу увеличивать область попадания. Я понимаю, что могу добавить прозрачную фигуру за этим, но это должно быть скомпилировано по воздуху для ios, и я не хочу вызывать ненужные перерисовки.

Есть ли способ определить прямоугольник как область попадания или, возможно, другое решение?

Ответы [ 2 ]

15 голосов
/ 11 октября 2011

Для этих целей есть специальное поле hitArea.

  const MOUSE_ZONE_SIZE:Number = 10;
  const hitArea:Sprite = new Sprite()
  hitArea.graphics.beginFill( 0xFFFFFF );
  hitArea.graphics.drawRect( -MOUSE_ZONE_SIZE, -MOUSE_ZONE_SIZE, MOUSE_ZONE_SIZE* 2, MOUSE_ZONE_SIZE* 2 );
  hitArea.mouseEnabled = false;
  hitArea.visible = false;
  hitArea.x = bitmap.x
  hitArea.y = bitmap.y
  bitmap.hitArea = hitArea;
  addChild( bitmap );
  addChild( hitArea );

К сожалению, даже если вы переопределите функцию HitTest * InteractiveObject, они не будут использоваться для диспетчеризации событий мыши :( Если кто-то знает, как заставить Flash использовать переопределенные методы - я бы тоже хотел это знать.

3 голосов
/ 11 октября 2011

Вы также можете создать кнопку с растровым изображением внутри нее, а затем определить hitArea. По сути, это то же самое, что делал Илья в коде. Однако, добавив новый экземпляр кнопки на сцену, вы сможете применить к ней MouseEvents.

Красивые картинки:)

Create the button symbol

Create a new key frame in the hitArea

Draw the hit area

package{
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class main extends MovieClip
{
    public function main()
    {
        var btn:button = new button();
        btn.addEventListener(MouseEvent.CLICK, clicked);
        this.addChild(btn);
    }

    private function clicked(e:MouseEvent):void{
        trace("Clicked");
    }

}
}

Проблема в том, что это увеличит объем памяти и мощности, которые можно использовать на iOS, так что это действительно просто кусок ...: (

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