Relegate
Aucun commentaire
Salut à tous,
Voici un petit hommage à Tek concernant sa fonction relegate, si si souvenez-vous, c'était en durant l'été 1994. Nous avions été bannis de la coupe du monde par Israël et Future Splash Animator battait son plein. Cependant l'idée était née, pourquoi ne pas passer des paramêtres supplémentaires lors de la délégation du contexte d'exécution d'une fonction. Tek nous avait gratifié de sa fonction Relegate trés pratique, voici la mienne côté javascript adaptée au modèle événementiel de Silverlight 1.0 :
[cc lang="actionscript" lines="30" ]
function createRelegate (instance, method)
{
var _params = [];
for(var n = 0; n < arguments.length; ++n)
{
_params.push(arguments[n]);
}
return function()
{
_params.splice(0,2);
_params.unshift(arguments[0],arguments[1]);
return method.apply(instance,_params);
}
}
[/cc]
Voici l'utilisation :
[cc lang="actionscript" lines="30" ]
this.control = control;
// Sample event hookup:
var rexe = rootElement.findName('rexe');
rexe.addEventListener("MouseLeftButtonDown", createRelegate(this, this.handleMouseDown,'toto'));
GetParent.Page.prototype.handleMouseDown = function(sender, eventArgs,pArg)
{
//sous firefox équipé de fireBug
console.log("valeur du dernier argument :: "+pArg);
}
[/cc]
Pour ma part, ça m'a été trés utile car les objets XAML ne sont pas dynamiques. Seule la propriété Tag d'un objet XAML peut recevoir une valeur de type primitif.

