メイン 迷える子羊の部屋【初心者専用】
AS3.0動画背景ステージ拡大・縮小時の不具合 | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| jtaro | Åê¹ÆNo.42684 投稿日時: 2009-6-25 16:18 |
新米 ![]() ![]() 居住地: 投稿: 3
使用環境:
WinXP,Flash CS3 AS3.0 MacOS10,FlashCS3 |
AS3.0動画背景ステージ拡大・縮小時の不具合 初めまして
AS3を始めて間もない新米です。 現在、HPを作成していましてちょっと問題に当たっています。 動画をムービークリップに入れ背景に置き、ステージの拡大縮小に合わせて拡大縮小する ものを作っております。 例サイト:http://www.sixstation.com/ 問題点: ステージ拡大縮小に合わせて、MCが比率を変えずにフィットしてくれますが、 ブラウザの拡大縮小を何回もやっていたり、ブラウザタブで切り替えてステージのサイズを変えて 戻って見てみるとフィットしていない事が多々あります。 動画MC名:mcMovie(サイズ:640×480) ステージサイズ:800×600 AS↓↓↓ //動画背景の処理-------------------------------------------------- var mcMovie_bg = mcMovie.height/mcMovie.width; // 変数 mcMovie_bg に mcMovie の 縦/横 の比を算出 stage.addEventListener(Event.RESIZE, backmovie); function backmovie (event:Event):void{ mcMovie.x = stageW / 2; mcMovie.y = stageH / 2; trace(mcMovie.x +( "px X座標")); trace(mcMovie.y +( "px Y座標")); mcMovie.width = stageW; mcMovie.height = stageW * mcMovie_bg ; trace(mcMovie.height+("px")); trace(mcMovie.width+("px")); //ステージ高さ÷ステージ横幅がmcMovie_bg(0.75)よりも大きい場合 if (stageH / stageW >= mcMovie_bg) { trace("条件通った") //ムービークリップ横幅をステージ高さ÷mcMovie_bg(0.75)にしてください mcMovie.width = stageH / mcMovie_bg; //ムービークリップ高さはステージ高さに合わせてください mcMovie.height = stageH; trace(mcMovie.height+("px")); trace(mcMovie.width+("px")); } } ----------------------------------------------------------------- 改善方法や他のやり方がありましたらご教授願います。 宜しくお願い致します。 追記 : stageW,Hはvar stageW:Number = stage.stageWidth;(H)指定してあります。 |
| hide33 | Åê¹ÆNo.42708 投稿日時: 2009-6-28 10:45 |
半人前 ![]() ![]() 居住地: 投稿: 39
使用環境:
CS4 10.6 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 こんにちは。わたしはAS3でMCにBitmapをいれて同様の事を行っていますが、初期読込時と拡大・縮小がブラウザにフィットしません。(Javascriptなし)
stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.addEventListener(Event.RESIZE, onStageResize); function onStageResize(event:Event):void { var stageW:Number = stage.stageWidth; var stageH:Number = stage.stageHeight; var stageR:Number = bg.width / bg.height; bg.x = stageW/2; bg.y = stageH/2; if (stageW / stageH >= stageR) { bg.width = stageW; bg.scaleY = bg.scaleX; } else { bg.height = stageH; bg.scaleX = bg.scaleY; } } |
| cda244 | Åê¹ÆNo.42709 投稿日時: 2009-6-28 12:40 |
新米 ![]() ![]() 居住地: 千葉 投稿: 5
使用環境:
CS3 4.11 XP Pro SP3 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 こんにちわ。
>hide33さん 初回起動時にEvent.RESIZEが起きていないから、と予想しました。 stage.addEventListener(Event.RESIZE, onStageResize); で登録した後で明示的に onStageResize を呼んでみてはどうでしょうか。 |
| hide33 | Åê¹ÆNo.42711 投稿日時: 2009-6-28 14:50 |
半人前 ![]() ![]() 居住地: 投稿: 39
使用環境:
CS4 10.6 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 cda244さん、コメント有り難うございます。
>明示的に onStageResize を呼んでみてはどうでしょうか。 試しにonStageResize();と記載してみましたが、やっぱり怒られました。onEnterFrameはこの場合違う気がしますし、Loadを監視する関数を作成してonStageResizeを実行すれば良いような気がしますがまだ模索中です。 jtaroさん、こんにちは。 私は下記のコードで初期読込時がうまく動作しないだけになりました。Firefox3.0.11では新規タブをリサイズした後に元のSWFを見てもリサイズされています。ブラウザの問題もあるかもしれませんね。多分ムービークリップの中身が画像か動画の違いだけのようですので・・・ 追記:不格好ですが、下記の部分を初期設定としてonStageResizeの外にコピーして解決したことにしました。動作としては同じ事だと思いますので シンプルな記載方法が在りましたらご教示下さい。 var stageW:Number = stage.stageWidth; var stageH:Number = stage.stageHeight; var stageR:Number = bg.width/bg.height; bg.x = stageW/2; bg.y = stageH/2; if (stageW / stageH >= stageR) { bg.width = stageW; bg.scaleY = bg.scaleX; } else { bg.height = stageH; bg.scaleX = bg.scaleY; } |
| cda244 | Åê¹ÆNo.42714 投稿日時: 2009-6-28 21:36 |
新米 ![]() ![]() 居住地: 千葉 投稿: 5
使用環境:
CS3 4.11 XP Pro SP3 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 >hide33さん、こんばんわ
>試しにonStageResize();と記載してみましたが、やっぱり怒られました〜 で、どのようなエラーが出たのかわかりませんが、とりあえず原因が2つ考えられます。 ・onStageResize()はEvent型の引数が必要。 ・addChildされないうちからstageを参照している。 1つ目の場合はEvent型の引数を付けて呼ぶか、 dispatchEvent() でEvent.RESIZE を起こせば実行されます。 2つ目の場合は、addChildされた、ということがわかればいいので Event.ADDED_TO_STAGE でイベントが取れます。 ぱっと思いついたのがこんな感じですが、いかがでしょうか。
|
| hide33 | Åê¹ÆNo.42716 投稿日時: 2009-6-29 3:18 |
半人前 ![]() ![]() 居住地: 投稿: 39
使用環境:
CS4 10.6 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 cda244さん、どうも有り難う御座いました。
色々検索してみましたが、これから試してみます。 (これからコンフェデレーションズカップ見ます) 追記:9:20 6/29 onStageResize();と記載すると引数が正しくありません。正しくは1です。と表示されます。 function dispatchEvent(event:Event):Boolean{onStageResize();} と記載してみたり、AS3-Help、googleしましたが、読込時に関数を実行する方法がよく分かりません。宜しくお願い致します。 |
| pmforest | Åê¹ÆNo.42721 投稿日時: 2009-6-29 17:33 |
新米 ![]() ![]() 居住地: 投稿: 2
使用環境:
WinXP,FlashCS3 MacOSX,FlashCS4 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 こんにちは。
nullを引数として渡してあげるとエラーがでなくなりますよ。 onStageResize(null); |
| hide33 | Åê¹ÆNo.42722 投稿日時: 2009-6-29 17:33 |
半人前 ![]() ![]() 居住地: 投稿: 39
使用環境:
CS4 10.6 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 お世話になります。
空き時間で色々試していますが、解決しません。 onStageResize関数の引数の渡し方が誤った部分だと指摘されます。 ご教示宜しくお願い致します。 stage.addEventListener(Event.ADDED_TO_STAGE, onStart); function onStart(event:Event):void{onStageResize();} 追記: pmforestさん、同時投稿でした。 nullを記載して解決致しました。どうも有り難う御座いました。 |
| jtaro | Åê¹ÆNo.42723 投稿日時: 2009-6-29 21:32 |
新米 ![]() ![]() 居住地: 投稿: 3
使用環境:
WinXP,Flash CS3 AS3.0 MacOS10,FlashCS3 |
Re: AS3.0動画背景ステージ拡大・縮小時の不具合 hide33さん pmforestさん cda244さん
ご回答ありがとうございます! 知らないうちにこんなに回答してくれてたなんて… onStageResize(null);でやってみましたが、 やはりFirefox3.0などのタブの切り替えでうまく表示されません…。。 感じ的にはhide33さんが回答してくださった↓ ----------------------------------------------------- var stageW:Number = stage.stageWidth; var stageH:Number = stage.stageHeight; var stageR:Number = bg.width/bg.height; bg.x = stageW/2; bg.y = stageH/2; if (stageW / stageH >= stageR) { bg.width = stageW; bg.scaleY = bg.scaleX; } else { bg.height = stageH; bg.scaleX = bg.scaleY; } ---------------------------------------------------- こちらの方がタブの切り替え以外、スムーズに反応します。 こちらで対応したいと思います。 御三方、回答ありがとうございました! |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン




CS4
10.6
XP Pro SP3
