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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     【Flash Lite】keyPressについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ebi
Åê¹ÆNo.17795
投稿日時: 2005-6-4 18:20
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
【Flash Lite】keyPressについて
なんと書けば良いのか分からなかったので、
タイトルが曖昧ですいません。

keyPressイベントハンドラは
ボタンを押してる限り何度も実行しちゃいますが、
1度ボタンを押したら指を離すまで
キーイベントを受け取らないって事は可能でしょうか?

またreleaseのように押した時でなく、
離した時にイベント受け取る事は可能でしょうか?
OhXCD
Åê¹ÆNo.17800
投稿日時: 2005-6-4 19:32
半人前
居住地: 関東
投稿: 53
使用環境:
WinXP SP2
FlashMX
Re: 【Flash Lite】keyPressについて
FlashLiteは触ったこと無いのですが、
単純にフラグを用意して、初期値はfalse。
KeyPressハンドラ内でフラグがfalseだったらTrueにして、
通常のハンドラ内処理実行。
既にtrueだったらハンドラから抜ける。

こんな感じでどうでしょう?
次にKeyPressイベントを受け取る前にフラグをリセットする必要がありますが。

離したときは、、、
Lite知ってる方にお任せします。

力技でやるなら、enterFrameかsetIntervalで監視ルーティンぶん回して、
KeyPressのフラグがfalseになるタイミングを得るとか。
かなり無茶ッすね
森 巧尚
Åê¹ÆNo.17801
投稿日時: 2005-6-4 20:14
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 【Flash Lite】keyPressについて
引用:
keyPressイベントハンドラは
ボタンを押してる限り何度も実行しちゃいますが、

keyPressイベントハンドラは、「キーが押されたとき」に1回来るだけですよ。ただパソコンの場合ずっと押していると、キーリピート機能が働いて「何度も繰り返し押している」ような状態になって何度も実行します。
よくわからないんですが、携帯でもそうなります?

でも「キーが押されたとき」はわかりますが「キーが離されたとき」はわからないですね。
それに、OhXCDさんが言われるような
力技でやるなら、enterFrameかsetIntervalで監視ルーティンぶん回して、
という方法は、enterFrameやsetIntervalがFlash 5や6以降のスクリプトなので使えないですね。

だから、状況に応じた工夫が必要そうです。

そもそも、キーを押し続けているとき「繰り返し起こって問題になる」のはなぜでしょうか?
もし「アニメーションが何度も頭から再生され直してしまう」ような場合でしたら、
「アニメーションが終わるまで繰り返さないようにフラグを使う」とか
「アニメーションが始まったらキーを監視しているボタンを消してしまう」という
方法でいけませんか?


----------------
森 巧尚
http://www.ymori.com

ebi
Åê¹ÆNo.17802
投稿日時: 2005-6-4 20:29
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 【Flash Lite】keyPressについて
OhXCDさん、ご返信ありがとうございます。

引用:
単純にフラグを用意して、初期値はfalse。
KeyPressハンドラ内でフラグがfalseだったらTrueにして、
通常のハンドラ内処理実行。
既にtrueだったらハンドラから抜ける。
こんな感じでどうでしょう?
次にKeyPressイベントを受け取る前にフラグをリセットする必要がありますが。


実はここに書き込む前の試行錯誤段階でコレやってました。
なんですよねぇ...これでできそうな気がしちゃうです。

でもね、だめなんすよ。

“既にtrueだったらハンドラから抜ける。”の後、
falseになりますわな。キーボタンは押されっぱなしだから、
次のキーイベント受け取り、falseだからTrueにして
ハンドラ内処理しますわな。で、またtrueだから抜け、
処理し、抜け、処理し、、、、、結果は同じ。
これ、KeyPressイベントそのものをtrueとfalseで
なぞるだけなんです。

引用:
e力技でやるなら、enterFrameかsetIntervalで監視ルーティンぶん回して、
KeyPressのフラグがfalseになるタイミングを得るとか。


enterFrameやsetIntervalはLiteではサポートしておらず...
よしんば、できたとしても... 前述の通りです。

せっかく返信して頂いたのにすいません。


引き続き試行錯誤してみます。
ver4ではどうやってたっけなぁ...
ebi
Åê¹ÆNo.17803
投稿日時: 2005-6-4 20:57
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 【Flash Lite】keyPressについて
森さん、ご返信ありがとうございます。

引用:
ただパソコンの場合ずっと押していると、キーリピート機能が働いて「何度も繰り返し押している」ような状態になって何度も実行します。
よくわからないんですが、携帯でもそうなります?


さすがのツッコミでございます。これも面白い(?)っていうか、困った事なんですが、機種によってキーリピートするものとしないものとあるようなのです。

うちはテスト用の実機としてDoCoMoはF700i、P506iC、AUはW22SAがあるんですが(テストしたい方、使って下さい)DoCoMoはリピートしませんが、AUはするんです。
森 巧尚
Åê¹ÆNo.17804
投稿日時: 2005-6-4 21:16
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 【Flash Lite】keyPressについて
Flash Liteのように制限が多くてできることが少ない場合は、1つの解決方法だけをずっと考え続けるのではなく、いろいろな方向から考えて、状況に応じた工夫をすることが必要です。

そもそも、キーを押し続けているとき「繰り返し起こって問題になる」のはなぜでしょうか?
「なぜ問題か」という視点から考えてみてはどうでしょうか。


----------------
森 巧尚
http://www.ymori.com

OhXCD
Åê¹ÆNo.17805
投稿日時: 2005-6-4 21:16
半人前
居住地: 関東
投稿: 53
使用環境:
WinXP SP2
FlashMX
Re: 【Flash Lite】keyPressについて
コンテンツ内容によるとは思うのですが、、、

KeyPressを押した瞬間だけ受け取って、
その後もう一度押すまで見ないってことですよね。
次にKeyPressを見に行くまでフラグをfalseのままって訳には行かないのでしょうか?
ebi
Åê¹ÆNo.17806
投稿日時: 2005-6-4 21:19
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 【Flash Lite】keyPressについて
引用:
だから、状況に応じた工夫が必要そうです。
そもそも、キーを押し続けているとき「繰り返し起こって問題になる」のはなぜでしょうか?
もし「アニメーションが何度も頭から再生され直してしまう」ような場合でしたら、
「アニメーションが終わるまで繰り返さないようにフラグを使う」とか
「アニメーションが始まったらキーを監視しているボタンを消してしまう」という
方法でいけませんか?


おっしゃる通りだと思います。捕われすぎてもいけませんよね。「繰り返し起こって問題になる」状況は何かといいますと...

ま・企画内容を話しちゃいますけど、釣りゲームなんです。魚は岸から離れようとする、釣り師は岸に寄せようとする、息詰まる攻防戦です。今回の件は“釣り師が岸に寄せようとする”のに使ってます。「5」キーを押すたび、一定の値だけ魚のY値が岸側に近づきます。魚の抵抗はジドウです。「負けるかー」とキーを連打するユーザー...をボワーンと想定してるわけです。なのに押しっぱなしで楽々釣果! 台無しなのです。

実は最初は“リールを巻く”ってイメージで、キーを1→2→5→4→の順で押すのを繰り返すって事にしてたんです。 (端末のボタンの並びでグルグル回る感じです)これはフツーにできて動作も問題なかったのですが、イメージと現実は往々にして違うもので... 操作性がかなり悪かったのです。それなら!と、ボタン2つにしました。1→2→を繰り返す形です。でもやっぱり操作性が悪いのです。そんなわけで結局1つにしたら...って経緯があります。

おわかりいただけますでしょうか?
「くだらんこだわりは捨てろ!」って解決法はナシでお願いします。
ebi
Åê¹ÆNo.17807
投稿日時: 2005-6-4 21:37
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 【Flash Lite】keyPressについて
OhXCDさん、ふたたび、ありがとうございます。

引用:
KeyPressを押した瞬間だけ受け取って、
その後もう一度押すまで見ないってことですよね。
次にKeyPressを見に行くまでフラグをfalseのままって訳には行かないのでしょうか?


さきほどの僕の返信、違ってましたかね?
ああいう事ではなかったのでしょうか...

森さんがおっしゃるキーリピート機能によって、そのKeyPressを押されている間はずーっと繰り返し受け取るって事ですよ? キーを押してる状態の内は“押しっぱなしの状態”でなく“何度も押されてる状態”としてFLASH側で受け取ってしまうという事です。“次に”も、その“次に”も、押されてる状態の範疇なんです。ちょっと説明しにくいですが...
森 巧尚
Åê¹ÆNo.17808
投稿日時: 2005-6-4 22:09
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 【Flash Lite】keyPressについて
キーが離されたことがわかる「onKeyUp」が使えなくて、
キーが今押されているかを調べる「Key.isDown」も使えないということは、
「ユーザーが今そのキーを離しているか」を調べるってできるのかな?

機種によってキーリピートが起こるということは、Flash側からは「キーが連打されたのか」「キーがただ押し続けられているのか」の区別がつかないということですよね。

引用:
「くだらんこだわりは捨てろ!」って解決法はナシでお願いします。

と、言われますが、「なぜそこにこだわるのか」をもう一度問い直してみるというのは大事じゃないでしょうか?
多少操作性が悪くても、全然ゲームにならない方法を選ぶべきかどうか。

ただ個人的意見ですが、今の「単純に連打するだけでゲームが勝てる」という仕様は機種によって再生スピードに違いが出そうなFlash Liteでは、機種によって差が出そうな気もしますけどね。
例えば、ですが「うきが沈んだ直後のタイミングにクリックする」ような仕様にすれば、ワンキーでもキーリピートによる連打で楽勝にはならなくなったりしますよね。
違う仕様を検討するのも方法かと・・・


----------------
森 巧尚
http://www.ymori.com

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

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