概要
scaleMode(拡大縮小モード)を指定してみましょう。
Flash Playerは画面サイズの変更ができます。
端を引っ張ればウィンドウサイズを拡大縮小出来ますし、右上の最大化ボタンや前回学んだフルスクリーンモードに変更することで画面サイズが変更されます。
端を引っ張ればウィンドウサイズを拡大縮小出来ますし、右上の最大化ボタンや前回学んだフルスクリーンモードに変更することで画面サイズが変更されます。
その画面サイズを変更したときに、中にあるStage、つまり描画領域部分をどう処理すればいいのかを指定するのがStage#scaleModeプロパティです。
具体的にどういう指定方法があるのか見ていきましょう。
具体的にどういう指定方法があるのか見ていきましょう。
100 * 67pxの画像です。
これを拡大していきます。
これを拡大していきます。
"NO_SCALE"を指定しました。
- 特徴
- 拡大縮小しても画像サイズは変わりません。
- 余白部分が表示されます。
"EXACT_FIT"を指定しました。
- 特徴
- ウィンドウの拡大に合わせて、ぴったりとフィットするようにStageも拡大されます。
- 例えばウィンドウサイズが横に2.5倍、縦に3.0倍伸びたら、Stageも横に2.5倍、縦に3.0倍伸びます。
"SHOW_ALL"を指定しました。
- 特徴
- 縦横比を維持したまま拡大します。
- 余白部分が表示されます。
"NO_BORDER"を指定しました。
- 特徴
- 縦横比を維持したまま拡大します。
- SHOW_ALLと違い余白が表示されないのですが、縦横比を保つために画像の一部がトリミングされます。
- 左側の葉っぱをよく見てください。半分しか表示されていません。薔薇の右側部分も切れています。
特徴は大体分かったと思いますので、実際にscaleModeを指定するコードを書いてみましょう。
stage.scaleMode = StageScaleMode.NO_SCALE;
// stage.scaleMode = "noScale";
scaleModeプロパティに値を代入するだけです。
コメントアウト部分のように文字列で指定することも可能です。
コメントアウト部分のように文字列で指定することも可能です。
StageScaleMode.NO_SCALE / "noScale"
StageScaleMode.NO_BORDER / "noBorder"
StageScaleMode.EXACT_FIT / "exactFit"
StageScaleMode.SHOW_ALL / "showAll"
StageScaleMode.NO_BORDER / "noBorder"
StageScaleMode.EXACT_FIT / "exactFit"
StageScaleMode.SHOW_ALL / "showAll"
検証用コード
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.LoaderContext;
public class Main extends Sprite
{
public function Main()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, init);
loader.load(new URLRequest("http://farm4.static.flickr.com/3128/2860777818_49a92254b2_t.jpg"), new LoaderContext(true));
}
private function init(event:Event):void
{
var loader:Loader = event.currentTarget.loader;
var bd:BitmapData = new BitmapData(loader.width, loader.height, false);
bd.draw(loader);
addChild(new Bitmap(bd));
}
}
}
このwikiの更新情報RSS