メイン コーダーズルーム【スクリプト系】
MX UI COMPONET のスクロールペインのスクロール | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| newborn | Åê¹ÆNo.18162 投稿日時: 2005-6-17 10:54 |
常連 ![]() ![]() 居住地: StoneRiverPrefecture 投稿: 170
使用環境:
|
MX UI COMPONET のスクロールペインのスクロール お世話になっております,newbornです。
私は、MX 2004 を使用しておりますが、付属のコンポーネント セット群は、動作が重いため、意図的に MX UI COMPONENT(MXのコンポーネントがMX 2004で動くもの) を使用しております。 そこで質問なのですが、2004のコンポーネントはマウスの ホイールでスクロールペインをスクロールさせることが できますが、これをMX UI COMPONET でも同様の動作をできることは、できますしょうか? ためしにスクロールペインがフォーカスをもっているかどうか を判別するべく _root.scrollPane.onSetFocus(){ trace("pane has focus"); } 上記のようなスクリプトを書いてみましたが、どうも反応しません。 MX 2004 のクラスファイルで該当箇所が書いてありそうなもので『wheel』で検索しても見つかりませんでした。 どなたかよい知恵がありましたら宜しくお願いします。
|
| Fumio | Åê¹ÆNo.18164 投稿日時: 2005-6-17 11:41 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
|
Re: MX UI COMPONET のスクロールペインのスクロール Windows環境でマウスホイールの回転は、Mouse.onMouseWheelイベントとしてリスナーに配信されます。このイベントを処理するスクリプトを何らかのかたちで追加して、ScrollPaneインスタンスを操作することになるのではないでしょうか。
引用: newbornさんは書きました: MX 2004のクラスを参考にされるということですか? mx.containers.ScrollPaneクラスは、mx.core.ScrollViewクラスを継承しています。このScrollViewクラスの中で、Mouseクラスへのリスナーを登録して、Mouse.onMouseWheelイベントを処理しているようです。 引用: MX 2004 のクラスファイルで該当箇所が書いてありそうなもので『wheel』で検索しても見つかりませんでした。 |
| knagai | Åê¹ÆNo.18165 投稿日時: 2005-6-17 11:44 |
職人 ![]() ![]() 居住地: 白馬村 投稿: 796
使用環境:
|
Re: MX UI COMPONET のスクロールペインのスクロール 確認ですが、MX UI COMPONENTというのは、たぶんFlash MX 2004のコンポーネント・パネルで「FLASH MX UI Components」と表示されているコンポーネントでよいのですよね? いつインストールしたのか忘れました。これとは別に「UI Components」というのもあります「FLASH MX UI Components」のScrollPaneを開いてみると、中のスクリプトはprototypeプロパティが使われているので、おそらくFlash MX用ではないかと想像します。
で、動作ですが、 Flash MX 2004のWindows版のフレーム1に、 で動きはしました。 このスクリプトは、Flash MX 2004の辞書のonMouseWheelからの引用です。 setScrollPosition()は、ScrollPaneを開いて、中のパブリックなメソッドを見て、適当にあてがってみたものです。 動きはしますが、中で別の働きがあるようで、動いた分元に戻されるような動きになります。 ということは、ScrollPaneはScrollBarからの派生コンポーネントで、内部でがっちり構成されていると思われるので、ScrollPaneのスクリプトを読んで理解し、いろいろテストすることが必要かと思います。 ScrollPaneは元々ScrollBarのつまみの位置に反応させるように作られているので、その部分を何とかマウスホイールからの数値で置き換えられるようにすると、何とかなるのではないでしょうか、と想像します。
|
| newborn | Åê¹ÆNo.18166 投稿日時: 2005-6-17 12:06 |
常連 ![]() ![]() 居住地: StoneRiverPrefecture 投稿: 170
使用環境:
|
Re: MX UI COMPONET のスクロールペインのスクロール 野中さん、永井さん、
すばやい返信ありがとうございます。 野中さん、 おっしゃるとおり、mc.core.ScrollViewの部分に記載されておりました。かなり探しはしたもののこの部分が見つけられませんでした。 この部分を参考にMX UI COMPONETSでも同様の動作ができるように変更できないものかと思い探しておりました。 今、さっとしか目を通しておりませんが、 現在フォーカスを保持しているコンポーネントの場合だけスクロールイベントをわたしている部分をさがして見たいと思います。 永井さん、 //永井さんのスクリプトを少し変更させていただきました。 mouseListener = new Object(); mouseListener.onMouseWheel = function(delta) { trace(delta); _root.sp2.setScrollPosition( 0,_root.sp2.getScrollPosition().y-delta*2); }; Mouse.addListener(mouseListener); 提示していただいたスクリプトだと、スクロールはできるのですが、スクロールペインがフォーカスを受けていない時にもスクロールペインがスクロールされてしまいます。
|
| Fumio | Åê¹ÆNo.18167 投稿日時: 2005-6-17 13:47 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
|
Re: MX UI COMPONET のスクロールペインのスクロール 他の閲覧者や後々の検索の便として
:引用: Flash TechNote「Macromedia Flash MX 2004 での Flash MX コンポーネントの使用」より: ただし、「ダウンロード」のページからは、その掲載がなくなっているようです。米国サイトのFlash Extentionで「Flash MX Components for Flash MX 2004, V1.5.0」が見つかりました。おそらくこれでよいでしょう。 引用: 永井勝則さんは書きました: |
| newborn | Åê¹ÆNo.18169 投稿日時: 2005-6-17 13:59 |
常連 ![]() ![]() 居住地: StoneRiverPrefecture 投稿: 170
使用環境:
|
Re: MX UI COMPONET のスクロールペインのスクロール 野中さん、
上記のフォロー参考文章ありがとうございます。 ScrollView.asを見てみました。 function init でマウスにリスナーを追加して、 マウスホイールのイベントが発生した際に、 function __onMouseWheelが呼びだされているのは、 理解できるのですが、一体どこでフォーカスを受けている コンポーネントだけでこのイベントを発生するように 制御しているのでしょうか? もしも、Mouse.onMouseWheelが発生した時は、すべてのリスナー にイベントが送られると思うのですが、、、 もしなにか私が見落としている点がありましたらご教授 お願いいたします。 // init variables and create internal objects function init(Void):Void { super.init(); __viewMetrics = new Object(); if (_global.__SVMouseWheelManager==undefined) { var s = _global.__SVMouseWheelManager = new Object(); s.onMouseWheel = this.__onMouseWheel; Mouse.addListener(s); } } function __onMouseWheel(delta:Number, scrollTarget:MovieClip) : Void { var i = scrollTarget; var sT; while(i!=undefined) { if (i instanceof mx.core.ScrollView) { sT = i; delete i; } i = i._parent; } if (sT!=undefined) { var i = (delta<=0) ? 1 : -1; var l = sT.vScroller.lineScrollSize; if (l==undefined) l=0; l = Math.max(Math.abs(delta), l); var nPos = sT.vPosition + l*i; sT.vPosition = Math.max(0, Math.min(nPos, sT.maxVPosition)); sT.dispatchEvent({type:"scroll", direction:"vertical", position:sT.vPosition }); } }
|
| Fumio | Åê¹ÆNo.18171 投稿日時: 2005-6-17 15:38 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
|
Re: MX UI COMPONET のスクロールペインのスクロール Mouse.onMouseWheelイベントは、第2引数として「マウスポインタが置かれた位置の一番上のムービークリップインスタンス」(「ActionScriptリファレンスガイド」)を受取ります。
引用: newbornさんは書きました: mx.core.ScrollViewクラスについては、リスナーはひとつしか作成しない仕組みになっています。 もしも、Mouse.onMouseWheelが発生した時は、すべてのリスナー mx.core.ScrollViewクラスでは、さらにそのインスタンスがScrollViewを継承しているかなどを評価したうえで、処理を行っているようです。 |
| newborn | Åê¹ÆNo.18172 投稿日時: 2005-6-17 16:01 |
常連 ![]() ![]() 居住地: StoneRiverPrefecture 投稿: 170
使用環境:
|
Re: MX UI COMPONET のスクロールペインのスクロール 野中さん、
ご返信ありがとうございます。 引用:
Mouse.onMouseWheelのリファレンスガイドを見てはいたものの、 ちゃんとは見てなかったようです。 ![]() 第二引数のそんざい、バッチリ見逃しておりました。 スクリプトを変更して、ある程度思い通りの動作ができるように なりました。後は微調整したいと思います。 大変ありがとうござりました。
|
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン









:

