actionscript 3 - Toque eventos para espacio vacío dentro de un sprite starling
actionscript-3 flash (2)
Tengo un Starling Sprite
que quiero obtener eventos táctiles. A estoy usando
content.addEventListener(TouchEvent.TOUCH, onTouch);
function onTouch(e:TouchEvent) {
var touch:Touch = e.getTouch(content) as Touch;
if (touch) {
//do something
}
}
Sin embargo, esto solo funciona cuando los hijos del Sprite son tocados y no en el espacio entre ellos. Estoy pensando que si creo una imagen alpha''d y me quedo debajo, entonces debería elegir los eventos táctiles, pero ¿hay una mejor manera?
También estaba pensando en escuchar el toque en el escenario y hacer el equivalente de un hitTestPoint()
.
se me ocurrio
var hitTest = (touch && content.hitTest(this.globalToLocal(new Point(touch.globalX, touch.globalY))));
Pero esto tampoco parece funcionar, el evento táctil solo funciona cuando se toca a un elemento secundario del contenido de Sprite.
Solución:
Al final usé un Quad alpha''d como lo sugirió Cherniv
bg = new Quad(width, height);
bg.alpha = 0;
addChildAt(bg, 0);
Espero que sea útil para ti.
content.addEventListener(TouchEvent.TOUCH, onTouch);
function onTouch(e:TouchEvent) {
var touch:Touch = e.getTouch(stage) as Touch;
if(touch && touch.phase == TouchPhase.BEGAN){
//do something
}
}
or
addEventListener(TouchEvent.TOUCH, onTouch);
function onTouch(e:TouchEvent) {
var touch:Touch = e.getTouch(sprite(eve.target)) as Touch;
if(touch && touch.phase == TouchPhase.BEGAN){
//do something
}
}
Intenta usar Quad
transparente ligero (sin necesidad de una Image
) en tu Sprite
.