0

私のガールフレンドは現在ウェブサイトで働いているグラフィックデザイナーです。彼女はHTMLやCSSをまったく知らず、Flashに精通しているだけなので、Webサイト全体をFlashで構築しています。私は開発者であり、HTML、CSS、またはFlashのいずれかについて0に近い経験があることに注意してください。

作業は順調に進んでいますが、彼女がサイトを展開するのを手伝った後([ファイル]-> [公開]を使用)、いくつかの問題が発生しました。彼女は1000x750ピクセルで.swfムービーを作成しました。1920x1200の24インチモニターで結果のWebサイトを調べたところ、物事は本当にピクセル化されているように見えました(映画はベクターグラフィックではなく画像を使用しています)。問題ありません。Flashの公開オプションでスケーリングを無効にするだけでよいと思いました。

ただし、スケーリングを無効にすると、解像度が低い(<= 1024x768)コンピューターでムービーを正しく表示できなくなるという新しい問題が発生したようです。

私たちが探している動作は、表示しているコンピューターの解像度/ブラウザーウィンドウに合わせてムービーを縮小することだけであり、拡大することではないと思います。ただし、Flash(CS4)は、公開オプションのオプションとしてこれを含めていないようです。そのような動作を可能にする簡単な方法はありますか?

4

1 に答える 1

1

説明する内容に組み込みのオプションはありませんが、Flash内またはJavaScript側のいずれかからスクリプトを使用して簡単に実現できます。答えの最後に、実行を開始するためのコードスニペットを配置します。

ただし、最初に、代わりにおそらく何をすべきかを提案させてください。(モニターのサイズに関係なく)ブラウザーがフルスクリーンになっていないユーザーが来たときに何が起こるかを考えてみてください。説明どおりに実装すると、ブラウザのサイズに応じて、サイトが任意の小さいサイズで表示され、判読できない、または使用できないほど小さいものが表示される可能性があります。

確かに、Flashがスケーリングを停止する最小サイズをさらに実装することでこれに対処できますが、その後、ユーザーがサイトをどのように見たいかについて多くの二次的な推測を始めます。代わりに、小さなモニター(または小さなブラウザーウィンドウ)を使用しているユーザーは、サイトに何を期待するでしょうか。その答えは、サイトをフルサイズで表示し、スクロールバーを追加することです。そして私のお金のために、それはあなたのサイトがすべきことです。

したがって、HTML(またはFlashのHTMLエクスポート設定)で、SWFを1000x750コンテナに埋め込みます。これにより、SWFがだれに対してもスケーリングされなくなります。モニターでは、スケーリングされていないサイトがウィンドウ内で中央に配置されている(または左上に配置されているなど)ことがわかります。小さいモニターでは、ブラウザーのスクロールバーを使用してサイト全体がスケーリングされていないことがわかります。 。

結局のところ、Flashコンテンツは本質的に拡大縮小しますが、ほとんどのWebサイトはテキストと画像で構成されており、そうではないことを理解する必要があります。実行時にスケールダウンすることはできますが、通常はユーザーが期待するものではなく、サイトの見栄えも良くなりません。


約束どおり、これがFlash AS3コードのスニペットであり、スケーリングで好きなことを実行するのに十分な有利なスタートを切ることができます。これにより、scalemodeが「noscale」に設定された状態で、ブラウザウィンドウ全体を占めるコンテナにFlashを公開した場合に、望ましい効果が得られるはずです。

// 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;
    }
}

これは、「someContent」が、ステージの原点(左上隅)に登録ポイントがある、スケーリングするすべてのものを保持するコンテナを指すと想定しています。ムービー全体を自動的にスケーリングする簡単な方法はないため、コンテンツをコンテナムービークリップに配置し、代わりにスケーリングすることをお勧めします。

上記のスニペットをステージ上のフレームアクションに自由に配置し、「someContent」を変更して、スケーリングできるコンテナを参照し、それを試してみてください。しかし、実際には、スケーリングされていないサイトを表示する方が使いやすいと判断することになると思います。

于 2009-09-17T17:53:38.343 に答える