2010-09-20 8 views
1

J'ai déjà posé cette question et il semblait que le code que j'utilisais était assez confus. Donc, c'est une version pratiquement dump du même code. Je dessine un carré sur le canevas en utilisant la fonction d'ajout. Comme sage, je devrais être en mesure de retirer l'élément de la toile en utilisant la fonction de suppression! Hélas, cela ne semble pas arriver.Je suis capable de dessiner la boîte mais je ne suis pas capable de l'enlever! (Canvas)

Voici le code

$(window).addEvent('load',function(){ 


CANVAS.init({ canvasElement : 'canvas' }); 
CANVAS.layers.add(new Layer({ 
    id : 'myLayer' 
})); 

var colors = [ 
    'rgba(255,0,0,1)', 
    ]; 

var pos = [ 
    { x: 150, y : 100 }, 
] 

     var foo = new CanvasItem({ 
     id : 'item', 
     x : pos[0].x, 
     y : pos[0].y, 
     fillStyle : colors[0], 
     events : { 
      onDraw : function(ctx) 
      { 
       ctx.fillStyle = this.fillStyle; 
       ctx.fillRect(this.x,this.y,200,200); 
      } 
     } 
    }); 

CANVAS.layers.get('myLayer').add(foo); 
CANVAS.draw(); 
CANVAS.layers.get('myLayer').remove(foo); 
CANVAS.draw(); 
    }); 

Il peut aussi être vu ici est jsfiddle

La bibliothèque J'utilise pour mettre en œuvre c'est via la bibliothèque de toile Mootools. Here is the link of the functions.

J'espère que cela aidera les gens à obtenir ma requête. N'hésitez pas à poser des questions si vous réfléchissez encore à ce qu'est exactement mon problème! Merci

EDIT: Il y a un bogue dans la bibliothèque. Veuillez trouver le lien vers le code corrigé ci-dessous dans les commentaires de la réponse. Merci.

Répondre

2

l'erreur dans la bibliothèque était dans la fonction remove. J'ai le script suivant qui supprime le bug. J'espère que ça aide les gens. :)

http://gist.github.com/589185

3

En regardant les documents du remove function, il semble que vous devriez passer le itemId pas l'objet de l'objet réel lors de l'appel.

+1

il semble une erreur dans le code source pour le procédé de suppression mentionnée ci-dessus de sorte qu'il ne passe pas l'identifiant mais une chaîne « id » à la place. référence: http://github.com/Mtillmann/mootools-canvas-lib/blob/master/Source/Layer.js#L42 - corrigez simplement cette méthode et tout ira bien. –

+0

@Dimitar Christoff - très bon endroit. En fait, je pense que vous devriez en faire votre propre réponse. Vous avez mon upvote si vous le faites. – irishbuzz

+0

@Dimitar - Merci de confirmer ce que je soupçonnais déjà :) J'ai réussi à le corriger hier et ça fonctionnait. Il faisait référence à une chaîne "a" à la place de l'objet a.id. Je pense remplacer par le code suivant dans la librairie fonctionne. remove: function (a) {this.items.get (a.id) .fireEvent ("détruire"); this.items.erase (a.id)} – Shouvik

Questions connexes