トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     自作コンポーネントの重なりを調べる方法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
関たかまさ
Åê¹ÆNo.12708
投稿日時: 2004-11-26 13:56
常連
居住地: 埼玉
投稿: 61
使用環境:
WinXP Pro(sp1)
FlashMX 2004 Pro 7.2
自作コンポーネントの重なりを調べる方法
こんにちわ。
現在自作でコンポーネントを作っているのですが、イベント処理で悩んでしまったので、助言をいただければと思ってます

データグリッドをSWCファイル(コンポーネント)として作成しています。
継承元はUIObjectです。
そこに、ヘッダやセルのMCがあって、UIScrollBarを右と下に配置しています。

完成したグリッドを新しいムービーに配置したときに、二つ重ねるように配置すると動作が思うように行きません。
というのも、ハイライト行や選択の処理をonMouseMoveなどで行っているのですが、例えば重なった部分では二つのどちらのグリッドもハイライト処理が行われてしまいます。

onRollOver/onRollOutでフラグ処理をやってみたんですが、今度はスクロールバーなどにイベントが届かなくなってしまいました・・・
(これは排他的にイベントが・・ってことですよね)

targetMC.hitTestをやっても、二重になったときはどちらにも反応してしまうので困っています。

うまく自分のコンポーネント上にマウスカーソルがある時のみ動作させる方法があれば教えていただきたいです
youich
Åê¹ÆNo.12722
投稿日時: 2004-11-26 16:06
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: 自作コンポーネントの重なりを調べる方法
引用:


完成したグリッドを新しいムービーに配置したときに、二つ重ねるように配置すると動作が思うように行きません。
というのも、ハイライト行や選択の処理をonMouseMoveなどで行っているのですが、例えば重なった部分では二つのどちらのグリッドもハイライト処理が行われてしまいます。

onRollOver/onRollOutでフラグ処理をやってみたんですが、今度はスクロールバーなどにイベントが届かなくなってしまいました・・・
(これは排他的にイベントが・・ってことですよね)

targetMC.hitTestをやっても、二重になったときはどちらにも反応してしまうので困っています。

うまく自分のコンポーネント上にマウスカーソルがある時のみ動作させる方法があれば教えていただきたいです


onMouse?はStage全体に反応しますので特別にコンポーネントに
限った問題ではないのではと思うのですが、なにか特にあります?
思いつくところでは、下のヒットテストは上のヒットテストが反応
している時は反応させないようにするとかでしょうか。

class GridDummy extends MovieClip{
	var _upper:GridDummy;
	
	function GridDummy(){
		this.onMouseMove = defaultMouseMove;
	}
	function set upper(grid:GridDummy){
		
		if(grid == undefined ||grid == null){
			this.onMouseMove = defaultMouseMove;
		}else{
			this.onMouseMove = extMouseMove;
		}
		_upper = grid;

	}
	function get over():MovieClip{
		return _upper;
	}
	
	function checkMouse():Boolean{
		return this.hitTest(_root._xmouse,_root._ymouse,true);
	}
	
	function defaultMouseMove(){
		if(checkMouse()){
			trace('onMouseMove ' + this);
		}
	}
	
	function extMouseMove(){
		if(checkMouse() && !_upper.checkMouse()){
			trace('addMouseMove ' + this);
		}
	}
}
//belowGridDummyMC.upper = upperGridDummyMC;


ピント外れなことを言っとりましたらすみませんです。


----------------
- yo

関たかまさ
Åê¹ÆNo.12724
投稿日時: 2004-11-26 16:21
常連
居住地: 埼玉
投稿: 61
使用環境:
WinXP Pro(sp1)
FlashMX 2004 Pro 7.2
Re: 自作コンポーネントの重なりを調べる方法
youichさん、サンプルまでどうもありがとうございます。

説明がちょっと足りなかったんですが、できればコンポーネントだけで完結させたいと思ってます

・・・ただ、どうしてもできなかったらyouichさんの手法がよさげですね
youich
Åê¹ÆNo.12741
投稿日時: 2004-11-26 18:33
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: 自作コンポーネントの重なりを調べる方法
引用:

関たかまささんは書きました:
youichさん、サンプルまでどうもありがとうございます。

説明がちょっと足りなかったんですが、できればコンポーネントだけで完結させたいと思ってます

・・・ただ、どうしてもできなかったらyouichさんの手法がよさげですね

そうですか?、単体でというとonLoadででも、上に重なっている
ものがあるかどうかをチェックしておくとかでしょうか。。
しかしonMouseMoveをたいはてきに制御するっていうロジックはあんまり思いつかないですね。


----------------
- yo

関たかまさ
Åê¹ÆNo.12749
投稿日時: 2004-11-26 20:20
常連
居住地: 埼玉
投稿: 61
使用環境:
WinXP Pro(sp1)
FlashMX 2004 Pro 7.2
Re: 自作コンポーネントの重なりを調べる方法
自己レスッス。

しょうがないので、上にいるコンポーネント(Depthで言うところの)は_level0領域にオブジェクトを登録し、コンポーネントは常にその値があればそのオブジェクトのhitTestで処理をすべきか判断する、って事にしました。

youichありがとうございました
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops