トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     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;
}

----------------------------------------------------
こちらの方がタブの切り替え以外、スムーズに反応します。

こちらで対応したいと思います。


御三方、回答ありがとうございました!


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops