0 votes

Comment faire pour que les objets d'un SWF Flash qui sont partiellement hors scène soient visibles et ne soient pas recadrés ?

J'ai un swf AS3 flash player 9 avec une taille de scène de 500x100, sur la scène j'ai quelques objets qui dépassent le bord de la scène, par exemple un cercle de 50 pixels de diamètre à 490,90.

Ce qui se passe actuellement lorsque j'incorpore le swf dans le HTML, c'est que le cercle est rogné. J'aimerais qu'il reste totalement visible même s'il se trouve en dehors de la zone de la scène. Ceci est critique pour le comportement de cette application particulière parce que j'ai besoin que la souris puisse accéder aux éléments html sous le film flash. Si j'agrandis simplement la scène, le cercle est visible mais les événements de la souris sont captés par la zone transparente de la scène flash.

Si je visualise le swf seul dans un navigateur, par exemple : localhost/test.swf, le cercle est intact. Je me souviens avoir eu le problème exactement inverse en flash il y a 8 ans lorsque je ne voulais pas que ces objets hors scène soient visibles mais ils l'étaient, donc je suis presque sûr que cela doit être possible mais je n'arrive pas à obtenir la bonne combinaison de paramètres pour que l'incorporation fonctionne correctement.

J'utilise swfobject 2 pour faire l'embed, mais j'ai essayé d'autres méthodes et j'ai obtenu les mêmes résultats.

Toute réflexion ou suggestion sera très appréciée :)

1voto

fenomas Points 9565

Votre problème n'est pas la zone de scène de Flash, mais la taille du conteneur du navigateur dans lequel Flash est intégré. C'est difficile à expliquer sans dessin, mais je vais essayer :

Lorsque vous créez un SWF, vous choisissez une taille dans l'outil de création. Cette taille est appelée "taille de la scène". Plus tard, lorsque vous intégrez votre SWF dans un navigateur, vous définissez une taille dans le code HTML, appelée "taille du conteneur". En général, les deux tailles sont identiques, mais ce n'est pas obligatoire.

Ce qui est important ici, c'est que lorsque vous visualisez votre SWF dans un navigateur web, la taille de la scène n'a pas d'importance (* voir note ci-dessous) - Flash rendra tout, que ce soit à l'intérieur ou à l'extérieur de la taille de la scène. C'est plutôt la taille du conteneur qui détermine l'étendue de la zone visuelle de votre SWF dans le navigateur. C'est exactement la même chose que de définir un <div> en HTML - lorsque vous intégrez votre SWF à une certaine taille, vous indiquez au navigateur web de n'allouer que cette zone à Flash et de ne pas permettre à Flash d'afficher quoi que ce soit en dehors de cette zone.

Ceci étant dit, la solution à votre problème est simple - il suffit d'intégrer Flash dans un conteneur plus grand. Si cela résout votre problème, c'est parfait. Cependant, je suppose que la raison pour laquelle vous posez cette question est que vous voulez que les graphiques de votre SWF soient apparaître de s'étendre à l'extérieur de son contenant. Si c'est le cas, la seule façon de procéder est d'intégrer votre Flash avec un arrière-plan transparent dans un conteneur plus grand qui est positionné de façon absolue avec CSS pour recouvrir le reste de votre contenu HTML. Il s'agit d'un sujet un peu avancé, mais recherchez des tutoriels sur les thèmes suivants "wmode=transparent" et ils devraient vous aider à démarrer.


note : (Tout au long de cette réponse, je suppose que vous intégrez avec scaleMode fixé à "noScale" - si vous ne l'êtes pas, vous devriez probablement l'être, à moins que vous ne compreniez pourquoi ce n'est pas le cas.)

0voto

La réponse ci-dessus est bonne, mais une autre fonction que vous pouvez utiliser (après avoir "ouvert" le containerSize) est la propriété salign. Cette propriété vous permet d'ajuster l'emplacement du swf dans le conteneur.

http://help.globalscape.com/help/cutehtmlpro5/Flash%5FSupport%5FParameters.htm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X