2011年12月10日土曜日

FlexのLineクラスでマウスイベントをキャッチする

Flexには直線や曲線を描写するためのLineクラスがあります
このクラスは、自身はSkinnableComponentではなく、親クラスのGraphプロパティを操作して線を描写します

つまり、Lineクラスではほとんどのイベントをキャッチできません
しかし線をクリックした際のイベントやなにやらを取得したいと思うのが人情です

そこでLineクラスをいったんGroupなどのコンポーネントに格納します
そのGroupコンポーネントでマウスクリックなどのイベントを取得すれば、Lineに対するイベント処理ができます

ただし、実際このように組んでも思うように動きません
なぜかというと、Lineで描写した線のx,y軸の最大値と最小値の範囲に矩形(長方形)型のGroupコンポーネントが存在するからです
なので、なにも存在しないように見える場所でも実際にはイベントを取得してしまうといったことが起こります

上記のやり方では、Lineクラスのイベントのみを正しく取得できないのかというと、そんなことはありません
一つプロパティをせっていするだけで、正しく動作します
  • mouseEnabledWhereTransparent=false;
これをGroupコンポーネントに対して設定するだけでLineクラスで描写した線のみに反応してイベントを取得できます


0 件のコメント:

コメントを投稿

Web Analytics