• ベストアンサー

FLASHで画面の最大化と100%表示をスクリプトで行うには

SWFを実行した際の、 (1)ウィンドウ右上の最大化のボタンを押して最大化。 (2)右クリックで"100%"を選択する。 という二つを行ったのと同じ効果をスクリプトで行いたいのですが方法を教えてください。 最大化ボタンを押すと、ウィンドウは最大化されますがムービーも拡大してしまうので右クリックのメニューで"100%"を選択して、ウィンドウは最大のままでムービーだけを元に戻すということです。 なぜこうしたいのかというと、マウスが画面外にでるとムービークリップが操作できなくなってしまうので、ウィンドウを広げたいのです。 fscommand("fullscreen",true)と記述することで画面を最大化することはできましたが、右上の閉じるボタンが見えなくなってしまうので別の方法で、閉じるボタンは使えるようにしたまま、上記の2つをスクリプトで行う方法を教えてください。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。 #1の回答で根幹は済んでいるのですが補足です。  Stage.scaleMode = "noScale"; と  fscommand("fullscreen", true); を書いた上で, 「×」ボタンを自作し, その「×」ボタンに  on (release) {    fscommand("quit");  } を書くという点についての勝手な補足です。 つまり#1を先に見ないと, 何のことかさっぱりわからないかもしれない回答です。 『「×」ボタンが右上に来ない』 と思われていらっしゃるかもしれないと思ったので, その点などについて,もう少し詳細に書きます。 「×」ボタンの自作は適当でもかまいませんし, 次のURLのように↓,凝った物を偽造しても良いです。 「Windowsっぽいボタンを作る」 http://www.motegi.to/fsite/xp-win.html (「NEXT」ボタンをクリック・クリック…です。) 絵の描き方自体は、 凝った物にするかどうかはお任せするとして, ボタンはムービークリップに変換したものか, ボタンシンボルに変換して良いですから, 変換するときの基準点を右上にしてください。 つまり, 「×」の絵を選択→「修正」→「シンボルに変換」で, 「シンボルに変換」ダイアログが出てきますから, そこで, //////////////////////////////////////////////  タイプ(T): ○ムービークリップ 基準点(R):□□■         ○ボタン              □□□         ○グラフィック            □□□ ////////////////////////////////////////////// のようにして,シンボルに変換してくださいということです。 こうすると計算式が簡単になります。 そしてそのボタンには,例えば, 「close_btn」というインスタンス名を付けてください。 そしてフレームには次のように書きます。 ---------------------------------------------------------- // 拡大縮小なし Stage.scaleMode = "noScale"; // 初期のステージのサイズを記録 var sw = Stage.width; var sh = Stage.height; // MovieClipインスタンス(_root)をリスナーに登録 Stage.addListener(this); // ステージのサイズが変わったら実行 this.onResize = function() { _root.close_btn._x = (Stage.width/2)+(sw/2)-10; _root.close_btn._y = -(Stage.height/2)+(sh/2)+10; }; // フルスクリーン表示 fscommand("fullscreen", true); ---------------------------------------------------------- これでそのボタン「close_btn」は, 右上の端から,左に 10px,下に 10px,の位置に表示されると思います。 この 10px はどこから来ているかと言うと,  _root.close_btn._x = (Stage.width/2)+(sw/2)-10;  _root.close_btn._y = -(Stage.height/2)+(sh/2)+10; この最後の -10 や +10 です。 なぜ上のような式が出てくるのかと言うと, ここでは図が描けないので説明しにくいのですが, 次のような図を紙に描いて落書きすると,わかると思います。    □□□□□□□□□□□□□□□×    ↑  □□□□□□□□□□□□□□□□    │  □□□□□□□□□□□□□□□□    │  □□□□□□■■■■□□□□□□ ↑ 拡大後  □□□□□□■■■■□□□□□□ sh  Stage  □□□□□□■■■■□□□□□□ ↓  .height  □□□□□□□□□□□□□□□□    │  □□□□□□□□□□□□□□□□    │  □□□□□□□□□□□□□□□□    ↓  ──────|←sw→|──────  |←───拡大後Stage.width───→|  ■■■ の部分が元のステージです。  □□□ の部分がフルスクリーンになったときのステージです。  Stage.scaleMode = "noScale"; を書いただけだと,元の状態であっても,フルスクリーンになっても, _x や _y の座標は,元のステージの左上を基準として(0,0)になります。  (0,0)    ↓    ■■■■    ■■■■    ■■■■ しかだって,フルスクリーンになったときの, ステージの右上の座標は,  x座標=(Stage.width/2)+(sw/2)  y座標=-(Stage.height/2)+(sh/2) で求められます。 落書きして考えるとわかると思います。 もし(もしですよ), 「×」ボタンだけではダメで,「タイトルバー」も必要な場合は, これも偽造すればいいですね。 ボタンよりは簡単に偽造できると思います。 そして, バー全体をムービークリップにして(基準点を右上にして), そして,「×」ボタンをその中に入れて, バーに何かインスタンス名を付けて, 上のようなスクリプトを書くとバーも上に着きます。 さらにもし(さらにもしですよ), タイトルバーに, 「f Macromedia Flash Player 8」 などのタイトルが左に欲しい場合は, バーは左右にそれぞれ1つずつ,つまり2つ作ります。 「f Macromedia Flash Player 8」などが入った 左用バーのムービークリップ はステージの左上に, 「×」ボタンが入った 右用バーのムービークリップ はステージの右上に, 付けるようなスクリプトを書けばできます。 なお, 左用バーのムービークリップを作るときの基準点は,左上にすると計算式が簡単になります。 仮に, 左用バーのムービークリップのインスタンス名を「bar_l_mc」 右用バーのムービークリップのインスタンス名を「bar_r_mc」 としておくとすると,座標指定のスクリプトは次のようになります。 _root.bar_l_mc._x = -(Stage.width/2)+(sw/2); _root.bar_l_mc._y = -(Stage.height/2)+(sh/2); _root.bar_r_mc._x = (Stage.width/2)+(sw/2); _root.bar_r_mc._y = -(Stage.height/2)+(sh/2); さらにさらにもし(さらにさらにもしですよ), Flash アイコンの 「f」 マークの偽造をしたい場合は, Get Flash Prayer のページで, http://www.adobe.com/go/getflashplayer 最新の Flash Player をインストールすると, http://www.adobe.com/shockwave/download/triggerpages_mmcom/flash-jp.html で、巨大な 「f」 マークがグルグル回りますから, この 「f」 マーク を見本すれば大きいので偽造しやすいです。 関係ないかもしれませんが, もし,Flash での作画が苦手な方であれば, 「×」ボタンや「f」マークを偽造するだけで, お絵描きのテクニックはかなり上がると思います。 その他, onResize などに関しましては, 次のURLを参考にしてみてください↓。 「Stage.onResizeリスナーイベント」 http://www.fumiononaka.com/TechNotes/Flash/FN0307003.html

rusio
質問者

お礼

回答ありがとうございました。 細かく説明してくださったおかげで疑問点がすべて解決しました。 特にNo2の補足では複雑な手順を図で分かりやすく説明してくださったので初心者の私でも理解することができました。 タイトルバーや「f」マークの偽造などの手の込んだことにも挑戦して腕を磨きたいと思います。 ありがとうございました。

その他の回答 (1)

noname#35109
noname#35109
回答No.1

ご質問から考えて, ネット上で Flash を見るのではありませんよね。 ローカルPCでSWFファイルをスタンドアローンのFlash Player で見るか, プロジェクタファイル(EXEなど)にパブリッシュしたものを見るということですね。 > (2)右クリックで"100%"を選択する。 これに関しては,ActionScript で可能です。 フレーム1 の最初のスクリプトに Stage.scaleMode = "noScale"; と書いておけば良いです。 > (1)ウィンドウ右上の最大化のボタンを押して最大化。 こちらは無理な気がします。 他の物を併用すればできないこともないですが↓。 「表示に関する情報について」の 「フルスクリーンで表示する」 http://hakuhin.hp.infoseek.co.jp/main/as/stage.html#STAGE_02 これ,一応フルスクリーンですが, Windows XP SP2 あたりからは,「×」ボタンが消えないと思います。 しかし..., > 右上の閉じるボタンが見えなくなってしまうので別の方法で、 > 閉じるボタンは使えるようにしたまま、 fscommand("fullscreen",true) は使用したまま, 閉じるボタンを自作しても良いと思いますよ。 「×」ボタンでも自作して ------------------------------- on (release) { fscommand("quit"); } ------------------------------- です。

関連するQ&A

専門家に質問してみよう