メイン コーダーズルーム【スクリプト系】 ComboBoxのListコンポーネントが後ろに隠れてしまう | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
takac | Åê¹ÆNo.9750 投稿日時: 2004-8-6 19:58 |
新米 居住地: 横浜 投稿: 6
使用環境:
Windows2000,Flash MX2004 |
ComboBoxのListコンポーネントが後ろに隠れてしまう 初めて投稿させていただきます。よろしくお願いします。
ComboBoxを持つシンボルを最前面に表示するために、以下のように getNextHighestDepth()によるdepthで配置したところ、ComboBoxが 持つListコンポーネントが、そのシンボルが持つ他のデータの後ろに なってしまうのです。 ↓"MyClip"が、ComboBoxを持つシンボルです。
そこでいろいろ試したあげく、
という方法で、myComboが持つListコンポーネントを 無理やり前に出しました。 ところが、上記サンプルはComboBoxがひとつですが、 実際に開発しているシンボルは、ComboBoxを多数持っているので、 もっと簡単な方法はないものかと調べているところです。 根本的にdepthの使い方をよく理解していないのかもしれませんが、 どなたかアドバイスいただければ幸いです。 |
newborn | Åê¹ÆNo.9789 投稿日時: 2004-8-9 19:07 |
常連 居住地: StoneRiverPrefecture 投稿: 170
使用環境:
MAC OSX panther/ WIN XP, Flash MX2004 pro, |
Re: ComboBoxのListコンポーネントが後ろに隠れてしまう 動作するかどうかは分かりませんが、
引用: var depth = getNextHighestDepth(); を
としてはどうでしょう?動かなかったらごめんなさい。 |
takac | Åê¹ÆNo.9797 投稿日時: 2004-8-10 11:23 |
新米 居住地: 横浜 投稿: 6
使用環境:
Windows2000,Flash MX2004 |
Re: ComboBoxのListコンポーネントが後ろに隠れてしまう newbornさん、お返事ありがとうございます!
newbornさんの書かれたコードで、 引用: mc.myClip.myCombo.swapDepths(depth) をみて、swapDepthsの使い方として、引数にdepthを与えることが できることを見落としており、初めて知りました。 ありがとうございました。 早速試したところ、残念ながらこの方法でもComboBoxのList コンポーネント(ドロップダウン部分)を前面に出すことが できませんでした。 調査結果としては、
を実行すると、
となり、やはりdropdownのdepthは、前に出てこないことが わかりました。(前回のサンプルで、createEmptyMovieClip()は 無駄な処理だったので消しました) getNextHighestDepth()が1048575を超えて生成するのもちょっと 疑問です。。。 ※余談ですが、Macromediaのサイトにある「Macromedia Flash(SWF) File Format Specification」をみたところ、インスタンスの配置と 思われる(?)PlaceObject2に、DepthはUnsigned 16bit integerと あり、-16384?1048575はいったいどこで決められているのかな、 と疑問に思った次第です。ActionScriptで生成されたインスタンスは、 SWFの中のPlaceObject2とは別ものなのでしょうか。。。 本件は、もともとAlertのようなモーダルウィンドウを生成しよう というところから生じた問題なので、Alertの処理を真似ようと考え、 PopUpManagerのcreateModalWindow()あたりから読んで、以下の ようにルートタイムラインに記述しました。
実はいろいろ試しているうちに偶然動いたので、内容が理解できていないのです。 上記の、buildDepthTable()と、getDepthByFlag()は、なぜDepthManagerの インスタンス無しでこれらのメソッドが呼び出せるのかがわからないのです。 _rootがDepthManagerを継承しているような動きにも見えるのですが、一行目の 「import mx.managers.DepthManager;」を記述しないとこれらのメソッドが動かない ようなので、中でいったいどのような処理が行われているのか検討がつきません。 そもそもこんなコーディングはしてはいけないのかと思ったりもしています。 ActionScriptの勉強中で、まだ初歩的なことがわかっていないのかもしれませんが、 どなたかご教授お願い致します。 |
newborn | Åê¹ÆNo.9798 投稿日時: 2004-8-10 12:26 |
常連 居住地: StoneRiverPrefecture 投稿: 170
使用環境:
MAC OSX panther/ WIN XP, Flash MX2004 pro, |
Re: ComboBoxのListコンポーネントが後ろに隠れてしまう こんにちわ。
newbornです。 確かに僕の書いたコードでは動きませんでしたね。ごめんなさい getNextHighestDepth()の使い方が間違っていたようです。 ムービークリップ内の一番高い深度を求めるコマンドのようです。 引用: Flash Player 7 takacさんはmyClipを一番最前面に出したいようなので以下のスクリプトではどうでしょうか?
|
youich | Åê¹ÆNo.9800 投稿日時: 2004-8-10 14:22 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: ComboBoxのListコンポーネントが後ろに隠れてしまう 引用:
ComboBox.__dropdownは_level0や_rootにできます。 なので、takacさんのサンプルではmyClipの方がdropdownより 上位の深度になっていることになるので、dropdownはmyClipの下に表示されるということになりますね。
出力
で、なぜにvar depth = getNextHighestDepth();がこんな高い 数値を返すかというとmx.managers.DepthManagerがreservedという 名前で_rootに1048575の深度でムービークリップを作っているから でしょうね。
だから、たとえば attachMovie("MyClip", "myClip", 1); などとしてみれば、__dropdownは前面に出ると思います。 引用:
これはDepthManager.getDepthByFlahのコードを見ていただければ解ると思いますが、 DepthManager.highestDepth(1048574)以下を対象に 深度の探索をしているから適正な深度が返されるのだと思います。
引用:
解りにくいですけどDepthManagerのコンストラクタでMovieClipのprototypeに DepthManagerのメソッドを参照させてるからですね。
|
takac | Åê¹ÆNo.9805 投稿日時: 2004-8-11 0:03 |
新米 居住地: 横浜 投稿: 6
使用環境:
Windows2000,Flash MX2004 |
Re: ComboBoxのListコンポーネントが後ろに隠れてしまう newbornさん、お返事ありがとうございます。
newbornさんのとおり実行してみると、swapDepthsはやらなくても前面に出ますね。 ありがとうございました! |
takac | Åê¹ÆNo.9807 投稿日時: 2004-8-11 0:26 |
新米 居住地: 横浜 投稿: 6
使用環境:
Windows2000,Flash MX2004 |
Re: ComboBoxのListコンポーネントが後ろに隠れてしまう youichさん、お返事ありがとうございます。
数々のご指摘のお陰で、大変勉強になりました。 特に最後の、 引用:
は、最も不明な点だったので、とても嬉しいです。 私は一点間違ったことを書いてしまったのですが、 引用:
は、ウソでした。この行は書かなくても、youichさんのとおりDepthManagerのコンストラクタが呼ばれれば、buildDepthTable()も getDepthByFlag()も使えました。 お陰様で自分が知らないことが多すぎることを痛感しましたので、コンポーネントやDepthManager、PopUpManager についてもう少し勉強しようと思います。 ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |