D0507121 FLASH内でブラウザのスクロールに追従するメニュー
Name Lar
Date 2005年07月12日 (火) 08時29分
Message はじめまして!今、普通のHTMLのサイトのように縦長のサイトを
オールFLASHで作っているのですが、このFLASHの中に↓のサイトの
用にスクロールに追従して常にブラウザ画面の中の一定位置にある
メニューを作りたいのですがそれは1つのFLASHの中でブラウザの
スクロールに対して別の動きをする物になってしまうので作るのは
無理なのでしょうか?
Home or Link http://www.openspc2.org/reibun/JS_TipsAndTricks/menu/008/code.html
Response 01
2005年07月13日 (水) 02時45分> 憲ちゃん 
はじめまして、Larさん♪

イメージとしては・・・
⇒こんな感じ■ブラウザウインドウを拡大縮小してもMCの場所を右側に固定?
⇒こんな感じ■ブラウザの大きさに影響されず常に中心に位置するムービー
ということかな?と思ったのですが、「スクロール」という点で決定的に異なるようですね!
どちらかというと・・・
⇒こんな感じ■HTMLテキストの上に重なるFlashのしくみ?
こちらの応用で、JavaScriptと組み合わせて、もしかしたらできるのではないか?と
”勘”ですが思います(^^;

今日は宴会帰りで、考える馬力がありませんので明日以降検討してみます。
Lar さんも考えてみてください(*^-^*)
Response 02
2005年07月13日 (水) 22時43分> Lar 
そうですね、実はこの質問を書き込む前に
丁度憲ちゃんさんが挙げてくれた上2つの例を参考にして
色々試してたところだったんですけど、これだとブラウザの
1画面内に収まる(or収める)場合じゃないとダメだったんです…。
なので下の方が近いですね…でもこうなるとやっぱJavaが
絡んで来ちゃいますよね…ウ〜ン^ ^;
Response 03
2005年07月13日 (水) 23時05分> 憲ちゃん 
とりあえず、お示しいただいたサイトのJavaScriptをそのまま借用して、
本体のswf「bs_main.swf」とメニュー用のswf「bs_menu.swf」を作成、
<div>レイヤーにそれぞれ乗せることで制御するようにしたのですが・・・(^^;

 ⇒サンプル bs_menu0.zip ※MX仕様

これらを埋め込んだHTMLタグは、

 <!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
 <HTML>
 <HEAD>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=x-sjis">
 <TITLE>bs_menu</TITLE>
 <SCRIPT LANGUAGE="JavaScript">
 <!--
 function setMenu() { スクロール位置によるmovie1の座標決定
   x = document.body.scrollLeft;
   y = document.body.scrollTop;
   menu.style.left= x + 20;
   menu.style.top = y + 20;
 }
 -->
 </SCRIPT>
 </HEAD>
 <BODY bgcolor="#000033" topmargin=0 leftmargin=0 onScroll="setMenu()">
 <div id=menu style=z-index:1;position:absolute;top:20px;left:20px;>
   <EMBED src="bs_menu.swf" quality=high wmode=transparent(改行しない)
                       bgcolor=#000099 WIDTH=100 HEIGHT=180></EMBED>
 </div>
 <div id=main style=z-index:0;position:absolute;top:0px;left:0px;>
   <EMBED src="bs_main.swf" quality=high wmode=transparent(改行しない)
                       bgcolor=#000033 WIDTH=1000 HEIGHT=1200></EMBED>
 </div>
 </BODY>
 </HTML>

赤字がメニューswfに関する部分です。

このJavaScriptを活用する関係で、どうしても2つのムービーにせざるを得なくなりました。
そこで、menu.swfからmain.swfのコントロールは・・・
■Flash間の通信機能「LocalConnection」
■別のHTML内にあるswfにstopやplayを適用するには?
この機能を使っています。

しかし・・
サンプルを作ってみてはじめて発見したことですが、
main.swfがブラウザの左上にあるときは問題ないのですが、スクロールの中途にあるとき、
なぜか描画が完全に切り替わらず、途中で途切れてしまいます。
「updateAfterEvent()」を使ってもだめでした!
残念です(^^;

解決策が見つからない以上、やはりひとつのFlashムービーにして・・・
ブラウザのスクロール自体もFlashで作るしかないのかもしれません(*^-^*)
仕切り直しです(;^_^A汗
Response 04
2005年07月22日 (金) 01時12分> 憲ちゃん 
何とかそれらしいものができました(^^g/~~

 ⇒サンプル b_scroll2.zip ※MX仕様

やはりひとつのムービーにして、スクロールバー自体もFlashで作成しました。
結構込み入ってしまったので詳しくご説明するのは大変なので、
ファイルを研究してください(*^-^*)

このページの先頭へ