Si je vous comprends bien, il semble que:
- Vous avez un petit Flex App dans le centre d'une page HTML
- Sur un événement, vous voulez créer un popup HTML (nouveau fenêtre contextuelle du navigateur).
- Cette fenêtre contextuelle doit être centrée dans la page HTML.
Si cela est correct, vous n'avez pas besoin d'utiliser localToGlobal ou globalToLocal; vous recherchez simplement les limites de la fenêtre du navigateur. Voici une méthode que je suis actuellement en utilisant de placer des articles par rapport aux limites du navigateur (tout cela est javascript):
function getBrowserBounds()
{
var size = [0, 0];
if (typeof window.innerWidth != "undefined") {
size = [window.innerWidth, window.innerHeight];
}
else if (typeof document.documentElement != "undefined" && typeof document.documentElement.clientWidth != "undefined" && document.documentElement.clientWidth != 0) {
size = [document.documentElement.clientWidth, document.documentElement.clientHeight];
}
else {
size = [document.getElementsByTagName("body")[0].clientWidth, document.getElementsByTagName("body")[0].clientHeight];
}
var bounds = null;
if (navigator.userAgent.indexOf("MSIE") != -1) // Internet Explorer
bounds = [window.screenLeft, window.screenTop, size[0], size[1]];
else
bounds = [window.screenX, window.screenY, size[0], size[1]];
var width = bounds[0] + (bounds[2]/2);
var height = bounds[1] + (bounds[3]/2);
return bounds;
}
qui renvoie les limites de la fenêtre du navigateur. De là, vous pouvez créer une fenêtre qui est centré dans le navigateur, chaque fois que le navigateur est dans les limites de l'écran d'ordinateur portable/de bureau, en utilisant ceci:
function centerPopup(windowHeight, windowWidth, windowName, windowUri)
{
var bounds = getBrowserBounds();
var centerWidth = bounds[0] + ((bounds[2] - windowWidth)/2);
var centerHeight = bounds[1] + ((bounds[3] - windowHeight)/2);
newWindow = window.open(windowUri, windowName, 'resizable=0,width=' + windowWidth +
',height=' + windowHeight +
',left=' + centerWidth +
',top=' + centerHeight);
newWindow.focus();
return newWindow.name;
}
Laissez-moi savoir si cela fonctionne.
Best, Lance
menu déroulant va être en flex ou html? Si elle est en flex, et si flex est déjà au centre de html, pourquoi avez-vous besoin des valeurs x/y de swf? ne pouvez-vous pas utiliser la fonction localtoglobal? – Amarghosh