Mostrando entradas con la etiqueta método. Mostrar todas las entradas
Mostrando entradas con la etiqueta método. Mostrar todas las entradas

miércoles, 16 de noviembre de 2011

Ejemplo método find de canvas-event


Varias personas han estado buscando como usar el método find de canvas-event, por lo que dejo un ejemplo de su uso mientras termino la documentación.

Interfaz del programa Kmines
Usando el método find, es posible seleccionar un grupo de objetos y aplicarles un método o manejador de evento. para esto debemos usar un selector como:
  • tipo: Corresponde con el nombre del método usado para crear el objeto (circle, rect, line...).
  • id: Un nombre que podemos dar a un objeto con el fin de diferenciarlo de otros del mismo tipo.
Imagine estar creando un buscaminas, el campo esta lleno con varios rectángulos: unos son minas y otros no. Todos los rectángulos tienen el mismo color, pero solo los rectángulos mina explotan y terminan el juego, mientras los demás aumentan el puntaje del jugador.

Nota Al igual que en css, el símbolo # indica que mina y safe son id.
for (var i = 0; i < 5; i++) {
        ce.rect(i*10, 0, 10).setId("mina");
    }
    
    for (var i = 0; i < 5; i++) {
        ce.rect(i*10; 10; 10).setId("safe");
    }
    
    // selector tipo: todos los rectángulos, tanto #mina como #safe
    ce.find("rect").attr("fill", "gray");
    
    // selector id: solo rectángulos #mina
    ce.find("#mina").click(function(c, e) {
        alert("Boom!");
        alert("Game Over");
    });
    
    // selector id: solo rectángulos #safe
    ce.find("#safe").click(function(c, e) {
        puntos += 1;
    });
Por otro lado el método getAll (solo en repo de github) retorna un array con los objetos que coinciden con el selector:
// encontrar y retornar los objetos rect dibujados hasta el momento
var rects = ce.findAll("rect");
// rects ahora es igual a [Rect, Rect, Rect...]
    
// obtener el primer circulo dibujado
var first_circle = ce.getAll("circle")[0];
Si tienen dudas o sugerencia pueden dejarlas en los comentarios, prometo tenerlas en cuenta.
 
© 2009 NovatoZ. All Rights Reserved | Powered by Blogger
Design by psdvibe | Bloggerized By LawnyDesignz