- ベストアンサー
Flashで外部読み込み画像の縦横比を維持したままリサイズする方法
- Flashで外部読み込み画像の縦横比を維持しながらリサイズする方法を教えてください。
- 画像の横幅が120以上の場合、横幅を120にリサイズし、縦の大きさはそれに比例して縮小します。縦の大きさが160以上の場合、縦の大きさを160にリサイズし、横幅はそれに比例して縮小します。
- Flashで外部読み込み画像の縦横比を維持したままリサイズする方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
そこまで調べただけでできていたら良く調べられていると思います。 あとは調べるのではなくて考えるものでしょう。 たとえば次のようにすればできます。 ※変更したのは listenerObject.onLoadInit = function() { } 内だけです。 --------------------------------------------------- var mcLoader:MovieClipLoader = new MovieClipLoader(); var listenerObject:Object = new Object(); listenerObject.onLoadInit = function() { // 変数 hpw に 「高さ/横幅」 の比を取得 var hpw:Number = photoFrame._height/photoFrame._width; // もし横幅が120より大きい場合 if (photoFrame._width>120) { // 横幅を120にする photoFrame._width = 120; // そして高さもその比に合わせて変える photoFrame._height = 120*hpw; } // 上の縮小をしても(しなくても)まだ高さが160より大きい場合 if (photoFrame._height>160) { // 高さを160にする photoFrame._height = 160; // そして横幅もその比に合わせて変える photoFrame._width = 160/hpw; } }; mcLoader.addListener(listenerObject); mcLoader.loadClip("photo001.jpg", photoFrame); --------------------------------------------------- 調べると言っても何を調べるのかわかりませんが, あえて ActionScript で調べるとするのら if文 くらいでしょうか。 「FLASHアクションスクリプト入門編 if / if else文」 http://isvalid.jp/actionscriptLab/ASlesson/actionsctipt_if.html もしくは ActionScript を離れて「相似比」とか。 「相似比」 http://contest.thinkquest.jp/tqj2002/50027/page098.html しかし,相似比などまで難しく考える必要はないと思います。 === === === === === === ちなみに上のスクリプトは 横幅もしくは高さのどちらか一方でも指定サイズを超えていた場合にリサイズ(縮小)させるものです。 もし横幅や高さが指定サイズよりも小さい場合でもリサイズする場合は, 上側の if文 の if をはずせば良いと思います。 …以上は略 … listenerObject.onLoadInit = function() { // 変数 hpw に 「高さ/横幅」 の比を取得 var hpw:Number = photoFrame._height/photoFrame._width; // 何が何でも横幅を120にする photoFrame._width = 120; // そして何が何でも高さをその比に合わせて変える photoFrame._height = 120*hpw; // 上の拡大縮小をしたときに高さが160より大きくなった場合 if (photoFrame._height>160) { // 高さを160にする photoFrame._height = 160; // そして横幅もその比に合わせて変える photoFrame._width = 160/hpw; } }; …以下は略… あと上のように, 「一旦,横幅に合わせてサイズを変えてみてから高さに合わせてサイズを変える」 というような 原始的方法というか荒業というかそういう方法ではなく, もっと理知的(?)なスクリプトにしたい場合は次のようにしても良いと思います。 --------------------------------------------------- // 横幅と高さの指定 var size_w:Number = 120; var size_h:Number = 160; var mcLoader:MovieClipLoader = new MovieClipLoader(); var listenerObject:Object = new Object(); listenerObject.onLoadInit = function() { // 変数 hpw に 「高さ/横幅」 の比を取得 var hpw:Number = photoFrame._height/photoFrame._width; // もし 「高さ/横幅」 の比が指定サイズの比よりも横長であった場合 if (hpw<size_h/size_w) { // 横幅を size_w にする photoFrame._width = size_w; // そして高さもその比に合わせて変える photoFrame._height = size_w*hpw; // もし 「高さ/横幅」 の比が指定サイズの比と同じか縦長であった場合 } else { // 高さを size_h にする photoFrame._height = size_h; // そして横幅もその比に合わせて変える photoFrame._width = size_h/hpw; } }; mcLoader.addListener(listenerObject); mcLoader.loadClip("photo001.jpg", photoFrame); --------------------------------------------------- どうしたいかは人や場合によって変わります。 その都度考えた方が良いと思います。
お礼
BlurFiltanさまへ。 ご教示いただいたスクリプトで、見事に理想通りの結果が得られました! 本当に本当にありがとうございます!!! こんな風に、スクリプトの意味もコメントで入れて下さり、 とてもご丁寧に説明して下さったお陰で、 教えていただいたスクリプトが、一体どんな意味を持つのか?、という事が、とても分かり易く、 また、次にまた自分が何かのスクリプトを組む時には、 こんな風に考えてスクリプトを組めば良いのか・・などと言った考え方の参考にもなったりして、 今回の問題が解決されただけでなく、それ以上の収穫ももたらして下さいました事を、 本当に心より感謝致します m(_ _)m もちろん、考え方の参考にと、リンクを貼って下さったサイトにも行って参りました。 こちらの方も、とても分かりやすい説明がなされたサイトで、とても勉強になります。 ありがとうございます! 最後に、、、 今回ご教示いただいた、この回答は、メモ帳に保存して、自作の教科書の1ページにしたいと思います! 本当に本当にありがとうございました m(_ _)m