|
久々の記事だが、BLOG de GAMEの更新ではないところがイタい感じ…。すみません、年末進行の作業に追われ、ほとんど仕事以外の事を最近していないのです。…で、今日はFlashでスクリーンセーバー制作のお話を少し。 仕事でスクリーンセーバーを作るのは初めてではないが、久しぶり。注文内容は「1024*768をメイン解像度としてターゲットにしつつ、それよりも解像度が低い場合は画面サイズにそって縮小。それよりも高い場合は回りにマージンが付くように」との指示。 今回はFlashで作ったswfをscreentimeというソフトを通してスクリーンセーバー用インストーラを作成する手順。Flashで普通に作ったもの(もちろんスクリプトを入れたければ好きなだけ入れて良い)を、screentimeで選択してインストーラ作成を選ぶだけの簡単作業。ただscreentimeのMac用はMacOS9+OSX用のインストーラ作成しかできないので、Win用スクリーンセーバーを作りたければWin用のscreentimeを使うべし。 普通に作ったところ1024*768以上のサイズで見て拡大されてしまった。(*1) また、次の手順でFlash内でスクリプト処理した(*2)ところ、拡大はされずにマージンがとれたが、白ではなく黒マージンが付いてしまった。今回のデザイン的に「白」が望ましいため、これはダメだ。(*3) 試行錯誤の末ようやく出来上がった。スクリーンセーバー再生のパネル設定において「フルスクリーン」を指定しておいたのだが、果たして合っているのだろうか。w ■Flashの中での拡大縮小の処理 *1 Stage.scaleModeを使い拡大や余白の処理をする(この他にもexactFit/noBorderがあるが割愛) Stage.scaleMode = "noScale"; // デザインサイズそのままに表示 Stage.scaleMode = "showAll"; // モニタ解像度(再生サイズ)にそって比率維持のまま拡大縮小 ■モニタ解像度によって拡大縮小処理の分岐 *2 ※全角スペースで整形中
System.capabilities.screenResolutionX:モニタ解像度(再生サイズ)の幅 単位:pixel
System.capabilities.screenResolutionY:モニタ解像度(再生サイズ)の高さ 単位:pixel
fscommand("fullscreen", true);
w = System.capabilities.screenResolutionX;
h = System.capabilities.screenResolutionY;
if(w >= 1024){
Stage.scaleMode = "noScale";
}else {
Stage.scaleMode = "showAll";
}
※環境によって完全ではないが、MacとWinでは取得される数字が微妙に異なる場合があるらしい
■マージン黒問題 これはどうやら設定ではなく、screentimeの仕様らしい。スクリーンセーバー再生の設定で「ノーマルサイズ」を選んだとき、内容がそれよりも小さい場合に余白が付くが、OSX10.4使用時にマージンが黒になってしまう。これはscreentime3.xでは修正されているようだが、それ以下のバージョンでは現在回避不可能っぽい。(回避方法をもしご存知の方がいたら報告お願いいたします!) そして背景やMCをモニタ解像度(再生サイズ)によって大きさ・位置など変更したい場合はリスナーを設定して処理させてみましょう。 ■リスナー設定でサイズ変更による処理をさせる
myListener = new Object();
myListener.onResize = function(){
// MCの大きさや位置などを整えるスクリプト処理
}
Stage.addListener(myListener);
|

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア



