Jcanvas Selektives Click

  • ich erzeuge mit der nachfolgend dargestellten Funktion 3 Reihen mit Rechtecken incl Text.


    ErstellNamensListe(vnamen,brv,50,100,0);

    ErstellNamensListe(nnamen,brn,50,150,0);

    ErstellNamensListe(vnamen,mrv,50,250,1)



    html-seminar.de/woltlab/attachment/1475/




    Die Funktion ::


    function ErstellNamensListe(ar,rr,x0,y0,ff)

    {

    var xstart = x0; var ystart =y0;

    var wrect = 110; var hrect = 40; var dist = 5;

    /////////////////////////////////////// Ausgabe Vornamen und Nachnamen



    for ( let i =0 ; i<rr.length; i++)

    {

    $('canvas').drawRect({

    layer: true,

    strokeStyle: 'black',strokeWidth: 1,fillStyle: 'lightblue',

    x: xstart + (i*( wrect+dist)), y: ystart, width: wrect, height: hrect,

    fromCenter: false,

    click: function(layer) {

    if (ff == 1)

    {

    alert("test HI");}}

    });

    $('canvas').drawText({

    layer: true,

    name: 'ntext' + i,

    groups: ['nachNamen'],

    fillStyle: 'black',

    x: 5 + xstart+ (i* (wrect+dist)),

    y: ystart+15,

    fontSize: 15,

    fontFamily: 'Verdana, sans-serif',

    text: ar[rr[i]],

    fromCenter: false

    });}}

    //////////////////////


    Wenn der Parameter ff in der Parameterleiste der Funktion = 1 gesetzt ist, soll ein Click
    (hier im Beispiel) ein alert bringen.

    Das funktioniert auch.



    Aber:


    Wenn ich die 3. Leiste ( hier ist ff = 1 gesetzt) anklicke, kommt das Alert . Es verschwinden aber die Namen auf der 2. und 3. Leiste


    html-seminar.de/woltlab/attachment/1476/


    Das gleiche passiert mit den Namen wenn ich im Canvas an einer beliebigen Stelle klicke.


    LG


    Jochen

  • Da fällt schnell auf, dass die Namen nicht eindeutig sind:

    name: 'ntext' + i,

    i fängt ja bei jedem Aufruf der Funktion wieder bei 0 an. Offenbar verwendet jCanvas den Namen auch für seine interne Buchführung, so dass es zu Problemen kommt. Gib dem Namen einen Zusatz, der ihn eindeutig macht.

    Zitat

    Das gleiche passiert mit den Namen wenn ich im Canvas an einer beliebigen Stelle klicke.

    Das überrascht zunächst, aber ich vermute stark, dass jCanvas einen Click-Listener für das ganze Canvas registriert und darin dann prüft, auf welches Element der Klick zutrifft.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!