Jcanvas Mehrfach Clicken

  • Was mach ich jetzt schon wieder falsch. Gebe nach 2 Stunden auf.


    In der fogenden Funktion ErstellNamensListe soll, wenn gklickt wird, die Funktion Treffer ausgeführt werden.

    Das funktioniert nur einmal. Nur beim ersten Click Ereignis. Wird die Funktion ErstellNamensListe ein zweites Mal aufgerufen reagiert sie nicht auf das Click Ereignis..



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

    {

    var xstart = x0; var ystart =y0;

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

    borderColor = 'black'; borderWidth = 2;

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

    {

    $('canvas').drawRect({

    layer: true,

    name: 'Rec' + nn +i,

    groups: [ 'Rec' + nn],

    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)

    {

    if (nn==3)

    {


    Treffer(zrv,i,nn,vnamen,brv);

    }

    }

    }

    });

    $('canvas').drawText({

    layer: true,

    name: 'ntext' + nn +i,

    groups: ['Namen'+nn],

    fillStyle: 'black',

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

    y: ystart+15,

    text: ar[rr[i]],

    fromCenter: false

    });

    }

    }


    Schöne Ostertage


    Jochen

  • Ich kenne die Ursache.


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


    Wenn ich in der ersten Reihe im ersten Durchlauf einen Vornamen angeklickt habe lasse ich die Reihe mit



    function Treffer(v,i,nn,name,ar)

    {

    if (v==i)


    {


    $('canvas').setLayer( 'ntext' + (nn-2) + transfer, {

    fillStyle: 'red',

    text: name[ar[transfer]],

    })

    .drawLayers();


    $('canvas').setLayerGroup('Rec' + nn, {

    visible:false,

    }).drawLayers();

    ;

    $('canvas').setLayerGroup('Namen' + nn, {

    visible:false,

    }).drawLayers();

    ;

    }

    }


    Verschwinden.


    Im zweiten Durchlauf erstelle ich die Namensleiste neu mit anderen Vornamen.


    Und dann funktioniert das zweite clicken nicht weil er ????????????????????? die Reihe aus dem ersten Durchlauf im Köcher hat.


    Kann ich das Problem lösen wenn ich in der obigen


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


    die alte Leiste wieder sichtbar mache und dann die neuen Namen für den Text ( Vornamen) reinschreibe.


    Oder arbeitet ich bessewr mit removeLayers()?


    LG


    Jochen

  • Zitat

    die alte Leiste wieder sichtbar mache und dann die neuen Namen für den Text ( Vornamen) reinschreibe.


    Oder arbeitet ich bessewr mit removeLayers()?

    Schwer zu sagen, was besser ist. Einfacher zu realisieren ist u. U. die zweite Möglichkeit, weil Du dabei deine Funktion für das Erstellen einfach nur erneut mit anderen Parametern aufrufen musst, während Du bei der ersten es mit setLayer neu machen musst.

Jetzt mitmachen!

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