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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     ユーザによるスクロールを禁止したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
flashlite
Åê¹ÆNo.39604
投稿日時: 2008-7-21 2:05
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
ユーザによるスクロールを禁止したい
FlashCS3、ActionScript3.0環境です。

現在、入力可能なテキストフィールドとページ切り替えボタンを配置してます。

1行目から10行目を表示して、ユーザが「次ページ」ボタンを押すことで
scrollV +=10; のような形で
11行目から20行目を表示させていく という感じの仕様です。

このテキストフィールドをユーザがスクロールできないようにすることは可能でしょうか?

スクロールバーは未使用、マウススクロール無効に設定しているのですが
文字を選択してドラッグされるとスクロールしてしまいます。



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

c-geru
Åê¹ÆNo.39606
投稿日時: 2008-7-21 2:15
職人
居住地: 文京区本郷
投稿: 209
使用環境:
10.6.8+ CS5.5
Win7+ CS4
Re: ユーザによるスクロールを禁止したい
引用:
スクロールバーは未使用、マウススクロール無効に設定しているのですが
文字を選択してドラッグされるとスクロールしてしまいます。


「入力可能なテキストフィールド」という時点で、文字選択時のスクロールを回避できないと思うので、予めテキストを10行ずつ表示するというのではダメですか?
flashlite
Åê¹ÆNo.39607
投稿日時: 2008-7-21 2:32
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: ユーザによるスクロールを禁止したい
ちなみに、入力TextFieldは
フォントサイズ18ポイント
_明朝 で設定されています。

引用:

「入力可能なテキストフィールド」という時点で、文字選択時のスクロールを回避できないと思うので、予めテキストを10行ずつ表示するというのではダメですか?


回答ありがとうございます。

入力可能なテキストフィールドという時点で、回避できないですか・・・
残念です。

c-geruさんの方法は、入力不可能なダイナミックテキストフィールドであれば、よかったのですが
入力可能なテキストフィールドだと、ユーザが1文字でもDeleteした場合
かなり大変で
後ろに、次のページの頭の部分の文字を追加しないといけなくて、それをどうやればよいのかでハマってしまいます。


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

c-geru
Åê¹ÆNo.39609
投稿日時: 2008-7-21 3:06
職人
居住地: 文京区本郷
投稿: 209
使用環境:
10.6.8+ CS5.5
Win7+ CS4
Re: ユーザによるスクロールを禁止したい
引用:
c-geruさんの方法は、入力不可能なダイナミックテキストフィールドであれば、よかったのですが
入力可能なテキストフィールドだと、ユーザが1文字でもDeleteした場合、かなり大変で後ろに、次のページの頭の部分の文字を追加しないといけなくて、それをどうやればよいのかでハマってしまいます。

確かにそうですね。仮に制御可能だとしても入力時に改行されたらどうするか・・・という問題もありますね。10行目で改行されたら、11行目が表示されなくなるというのも問題かと。

Event.ENTER_FRAMEで常に監視して、変化があったら強制的に更新するということもできなくなさそうな気もしますが、ちょっと入力がしにくそうな気がします。

現在の表示は、TextField.scrollVとTextField.bottomScrollVの範囲になるので、TextField.scrollVの値を監視しておいてずれたら強制的に指定値にしてやる・・・という感じでしょうか。
flashlite
Åê¹ÆNo.39679
投稿日時: 2008-7-26 4:48
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: ユーザによるスクロールを禁止したい
引用:

c-geruさんは書きました:

Event.ENTER_FRAMEで常に監視して、変化があったら強制的に更新するということもできなくなさそうな気もしますが、ちょっと入力がしにくそうな気がします。

現在の表示は、TextField.scrollVとTextField.bottomScrollVの範囲になるので、TextField.scrollVの値を監視しておいてずれたら強制的に指定値にしてやる・・・という感じでしょうか。


常に監視ではなく、TextFieldのChangeイベントが発行されたら
ということで対応してみました。

行の変化は11行目が発生したら10行目までの文字に削って
11行目にあたる文字は、次のページの頭に挿入という形をとれるので
(わかりやすく説明するとOfficeワードみたいなものを作りたい。)
改行の処理はそれほど難しくありません。

むしろ、Delで文字を消したとき、
例えば5文字削除したからといって、次のページの頭の5文字をもってくればOKとはいかない点で困ってます。
(TextFieldでは、自動で行頭・行末禁止処理や英文を1行に表示するので)

なので、挑戦・断念しながら
掲題に戻って ユーザによるスクロールを禁止したい のよい方法を探しています。


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

taikiken
Åê¹ÆNo.39682
投稿日時: 2008-7-26 10:23
新米
居住地: 福岡
投稿: 11
使用環境:
OSX 10.3,10.4,10.5:MX2004,8,CS3
WinXP:MX2004,8,CS3
Re: ユーザによるスクロールを禁止したい
スクロールバーのでないテキストフィールドにし、表示させたい行数だけマスクするというのではどうでしょう。


----------------
***********************************
taikiken

flashlite
Åê¹ÆNo.39694
投稿日時: 2008-7-27 5:16
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: ユーザによるスクロールを禁止したい
引用:

airpropさんは書きました:
スクロールバーのでないテキストフィールドにし、表示させたい行数だけマスクするというのではどうでしょう。


回答ありがとうございます。

念のため
入力可能なテキストフィールドと
UIコンポーネントのTextArea でスクロールポリシーをOFFにして
スクロールバーは出さないようにして、

スクロールされてしまう可能性のある行の上に、マウスイベントを持つようなオブジェクトをおいて
マスクしてみましたが、テキスト入力内にフォーカスがある場合は、ドラッグで簡単にスクロールしてしまい
がんばってマスク作りましたが
残念ながら無力でした。。



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

taikiken
Åê¹ÆNo.39696
投稿日時: 2008-7-27 7:47
新米
居住地: 福岡
投稿: 11
使用環境:
OSX 10.3,10.4,10.5:MX2004,8,CS3
WinXP:MX2004,8,CS3
Re: ユーザによるスクロールを禁止したい
「入力可能」なを見落としていました、すみません。

テキストフィールドのEvent.CHANGEをリスナーしnumLinesが10を超えたら・・・というような関数で制御できるかと思います。

input_txtインスタンスをステージに置いてます。
5行を超える入力が出来ません。
this.input_txt.addEventListener(Event.CHANGE,changeHandler)
var oldText:String;
function changeHandler(e:Event){
	if (e.target.numLines > 5){
		e.target.text = oldText
	}
	
	oldText = e.target.text
}


ご理解しているとは思いますが、作成しようとされているインターフェースは一般的なテキストフィールドに期待されている挙動とは異なります。


----------------
***********************************
taikiken

flashlite
Åê¹ÆNo.39743
投稿日時: 2008-8-1 3:20
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: ユーザによるスクロールを禁止したい
ありがとうございます。
最初に明記しておくべきだったのですが、
FlashでOffice-WORDのようなページ単位で入力できるものを作っています。

仮に1ページ10行であれば、11行目にあたる部分は次のページの1行目として挿入される
べきであり、そういった動作は実現できています。

整理すると
・10行表示させるものに、11行以上のTextFieldを用いると
ユーザのドラッグなどでスクロールしてしまう。
そこで
・10行目までだけを切り取って表示させると、ユーザによって1行削除などを行われたときに
次ページにあたる続きの文字があれば、そのページの文末に追加しないといけない。(Wordのような挙動)
それが、何文字もってくれば良いかよくわからない

というところです。


ユーザがちょっと操作ミス(ドラッグしてしまう)をすると、スクロールによって行がずれてしまうので
スクロール自体を禁止できないかと思ったわけです。

引用:

ご理解しているとは思いますが、作成しようとされているインターフェースは一般的なテキストフィールドに期待されている挙動とは異なります。


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

あにぃ
Åê¹ÆNo.39746
投稿日時: 2008-8-1 9:58
職人
居住地: 北海道
投稿: 250
使用環境:
Flash8
FlashCS3
WinXP
FlashLite1.1 / 2.0
Re: ユーザによるスクロールを禁止したい
引用:

flashliteさんは書きました:
・10行目までだけを切り取って表示させると、ユーザによって1行削除などを行われたときに
次ページにあたる続きの文字があれば、そのページの文末に追加しないといけない。(Wordのような挙動)
それが、何文字もってくれば良いかよくわからない

selectionBeginIndex及びselectionEndIndexを使用すればドラッグ範囲を取得できますので、何文字もってくればいいのかは安易に取得できる気がします。


----------------
質問する際には、ご自分でできる限り調べてから投稿して下さい

P・S 職人おめでとう。(08/10/09)

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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