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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     Listの選択、決定の仕方について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
dt_matsui
Åê¹ÆNo.4683
投稿日時: 2004-3-8 11:34
新米
居住地:
投稿: 11
使用環境:
Windows 2000
Flash MX 2004
Flash Remoting
IE6.0sp1
Listの選択、決定の仕方について
Flash MX 2004を使用して、コンテンツを作っています。
Listオブジェクトを使用して、表示した結果を選択させるインタフェースについて、悩んでいます。
表示結果を選択、決定させる際、以下2種類の動きを考えています。

(1)表示項目をマウスのボタンクリックで決定する。
(2)上下キーで項目を選択し、enterキーで決定する。

[悩んでいる事]
(1)をon(change)で判断すると、(2)で上下キーを押した際にもイベントをひろってしまいます。
on(change)の中で、上下キー押下で呼び出されたのか、getKeycodeで判断させるようにすると、
上下キーを押した後に、マウスクリックで決定しようとした場合に、直前の押下キーが上下キー
になっている為、マウスクリックでon(change)が呼び出されたと判断する事ができません。


また、以下のような事ができれば、マウスクリック押下でのon(change)なのか、上下キー押下での
on(change)なのか、判断できるので、上記内容を解決できると思っています。

(a)直前のキー押下をgetKeyCodeで取得できますが、直前のキー押下をクリアする事はできるのでしょうか。
 →クリアできれば、上下キー押下と判断した直後に情報をクリアして、マウスクリックされた場合は、
  上下キー押下と判断する事がなくなると思うので、解決できるのかと。

(b)イベントをひろう際、on(change)、on(keyDown)というように呼び出されるのですが、
 ひろう順番を、on(keyDown)、on(change)という順番に拾えないでしょうか。
 できるのであれば、on(keyDown)時にフラグを持たせておいて、changeが呼び出された
 理由がマウスクリックであるのか、上下キー押下であるのか判断できると考えています。


同じような事を実現されている方等おられないでしょうか。
何か、アドバイスを頂ければと思います。
よろしくお願いします。
野中文雄
Åê¹ÆNo.4693
投稿日時: 2004-3-8 13:38
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Listの選択、決定の仕方について
ご使用の環境は、プロフィールに記入しましょう。
引用:
dt_matsuiさんは書きました:
Flash MX 2004を使用して、コンテンツを作っています。

イベントの発生順序は、変えられません。しかし、onClipEvent (keyDown)Key.onKeyDownハンドラは、Listコンポーネントのon (change)より先に呼出されます。
引用:
Listオブジェクトを使用して、表示した結果を選択させるインタフェースについて、悩んでいます。
表示結果を選択、決定させる際、以下2種類の動きを考えています。

(1)表示項目をマウスのボタンクリックで決定する。
(2)上下キーで項目を選択し、enterキーで決定する。
...
(b)イベントをひろう際、on(change)、on(keyDown)というように呼び出されるのですが、
 ひろう順番を、on(keyDown)、on(change)という順番に拾えないでしょうか。
 できるのであれば、on(keyDown)時にフラグを持たせておいて、changeが呼び出された
 理由がマウスクリックであるのか、上下キー押下であるのか判断できると考えています。

// Listインスタンス
// コンポーネントアクション
onClipEvent (keyDown) {
	this.nKey = Key.getCode();
}
on (change) {
	if (this.nKey != Key.UP && this.nKey != Key.DOWN) {
		trace(["selected by mouse click", this.selectedItem.label]);
	}
	delete this.nKey;
}
on (keyDown) {
	if (eval(Selection.getFocus()) == this) {
		if (this.nKey == Key.ENTER) {
			trace(["selected by the enter key", this.selectedItem.label]);
		}
	}
	delete this.nKey;
}


----------------
 

dt_matsui
Åê¹ÆNo.4708
投稿日時: 2004-3-8 16:54
新米
居住地:
投稿: 11
使用環境:
Windows 2000
Flash MX 2004
Flash Remoting
IE6.0sp1
Re: Listの選択、決定の仕方について
野中様

早々の返信、ありがとうございます。
また、サンプルプログラムまでつけて頂き、
非常に参考になりました。

仰られている通り、onClipEventを作成して、解決できました!!
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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