mardi 22 janvier 2008

Insérer du Flash dans une animation Silverlight (Workaround)

Pour un futur projet je serai amené à développer des animations Silverlight contenant des fichiers flash (swf).

Il semble qu'il n'existe actuellement aucun contrôle Silverlight permettant d'insérer une animation flash.

Voici donc le workaround que j'ai trouvé pour contourner cette "limitation".
Tout d'abord il faut modifier le fichier javascript utilisé pour créer l'objet javascript et ajouter le paramètre isWindowless

Silverlight.createObjectEx({ source: "Page.xaml", parentElement: document.getElementById("silverlightControlHost"), id: controlID, properties: { width: "100%", height: "100%", version: "1.1", isWindowless:"true" }, events: { onError: function(sender, args) { var errorDiv = document.getElementById("errorLocation"); if (errorDiv != null) { var errorText = args.errorType + "- " + args.errorMessage; if (args.ErrorType == "ParserError") { errorText += "
File: " + args.xamlFile; errorText += ", line " + args.lineNumber; errorText += " character " + args.charPosition; } else if (args.ErrorType == "RuntimeError") { errorText += "
line " + args.lineNumber; errorText += " character " + args.charPosition; } errorDiv.innerHTML = errorText; } } } });

Ensuite il faut modifier la page qui contient l'animation silverlight et utiliser la notion de "calque" DHTML grâce au positionnement absolu des contrôles et à une iFrame.

L'iFrame contiendra une page qui contient elle-même le controle flash :
Au final l'iFrame viendra se positionner au dessus de l'animation silverlight.

Aucun commentaire: