2009-09-17 10 views
0

Ma copine est une graphiste qui travaille actuellement sur un site Web. Elle ne connaît aucun code HTML ou CSS et ne connaît que Flash. Elle construit donc l'intégralité du site en Flash. Il est à noter que je suis développeur et que j'ai près de 0 expérience avec HTML, CSS ou Flash.Redimensionnement pour ajuster la résolution, mais pas dans Flash CS4

Le travail progresse bien, mais après l'avoir aidé à déployer le site (via Fichier-> Publier), nous avons rencontré quelques problèmes. Elle a construit le film .swf à 1000x750 pixels. Après avoir inspecté le site web de mon moniteur 24 "à 1920x1200, les choses semblaient vraiment pixélisées (le film utilise des images, pas des graphiques vectoriels.) Pas de problème, je devrais juste désactiver la mise à l'échelle des options de publication de Flash.

Cependant, la désactivation de mise à l'échelle apparemment introduit le nouveau problème que le film pourrait désormais ne plus être correctement vu à des ordinateurs exécutant de basses résolutions (1024x768) = <.

Je suppose que le comportement que nous recherchons est seulement échelle vers le bas le film pour s'adapter à la résolution/fenêtre du navigateur de l'ordinateur, mais pas à l'échelle, mais Flash (CS4) ne semble pas l'inclure dans ses options de publication. Les méthodes pour permettre un tel comportement?

Répondre

1

Il n'existe pas d'option intégrée pour ce que vous décrivez, mais elle est facilement réalisable avec les scripts, que ce soit dans Flash ou JavaScript. Je vais mettre un extrait de code à la fin de la réponse qui devrait vous aider à démarrer. D'abord, cependant, permettez-moi de suggérer ce que vous devriez probablement faire à la place. Pensez à ce qui se passe quand un utilisateur arrive (qui, peu importe la taille du moniteur) n'a pas le navigateur en plein écran. Si vous mettez en œuvre comme vous le décrivez, ils verront votre site à une taille arbitrairement petite, en fonction de la taille de leur navigateur, et verront probablement quelque chose de suffisamment petit pour être illisible et/ou inutilisable. Maintenant, bien sûr, vous pouvez résoudre ce problème en implémentant une taille minimale en dessous de laquelle Flash arrête la mise à l'échelle, mais vous commencez à faire beaucoup de doutes sur la façon dont les utilisateurs verront votre site. Au lieu de cela, il convient de vous demander, ce qui serait un utilisateur avec un petit moniteur (ou une petite fenêtre de navigateur) attendre le site à faire? Et la réponse à cela est, montrer le site en taille réelle et ajouter des barres de défilement. Et pour mon argent, c'est ce que votre site devrait faire. Ainsi, dans votre HTML (ou dans les paramètres d'exportation HTML de Flash), insérez votre fichier SWF dans un conteneur 1000 x 750. Cela empêchera le SWF de se mettre à l'échelle pour tout le monde - sur votre moniteur, vous verrez le site non calibré centré (ou aligné en haut à gauche) dans la fenêtre, et sur les moniteurs plus petits, le site entier . À la fin de la journée, vous devez réaliser que même si le contenu de Flash évolue de manière inhérente, la plupart des sites Web sont constitués de texte et d'images, ce qui n'est pas le cas. Même si vous pouvez réduire l'échelle au moment de l'exécution, ce n'est généralement pas ce que l'utilisateur attend et cela ne rend généralement pas le site beau.


Maintenant, comme promis, voici un extrait de code AS3 Flash qui devrait vous donner assez de tête commencent à faire ce que vous aimez avec mise à l'échelle. Cela devrait vous donner l'effet désiré, si vous avez publié votre Flash dans un conteneur qui occupe toute la fenêtre du navigateur, avec le paramètre scalemode réglé sur "aucune échelle".

// perform initial size check 
checkStageSize(); 

// register to re-check when stage size changes 
stage.addEventListener(Event.RESIZE, onResize, false, 0, true); 
function onResize(e:Event) { 
    checkStageSize(); 
} 

// do the scaling here 
function checkStageSize():void { 
    var wid:Number = stage.stageWidth; 
    var hi:Number = stage.stageHeight; 
    var needToScaleDown:Boolean = (wid < 550); // or some other test 
    if (needToScaleDown) { 
     var scale:Number = wid/550; 
     someContent.scaleX = someContent.scaleY = scale; 
    } else { 
     someContent.scaleX = someContent.scaleY = 1; 
    } 
} 

Cela suppose que « somecontent » fait référence à un tout support de conteneur que vous voulez à l'échelle, avec son point d'enregistrement à l'origine de la scène (coin supérieur gauche). Il n'existe pas de méthode simple pour mettre à l'échelle automatiquement l'ensemble du film. Vous devez donc placer votre contenu dans un clip de conteneur et le redimensionner à la place. N'hésitez pas à mettre l'extrait ci-dessus dans une action de cadre sur la scène, changer "someContent" pour se référer à un conteneur que vous pouvez mettre à l'échelle, et jouer avec. Mais je pense vraiment que vous finirez par décider qu'il est plus facile de montrer le site sans échelle.