main.html*************************************
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<meta http-equiv="Content-Style-Type" content="text/css">
<link href="css/ffUI.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/ffmain.js"></script>
</head>
<body>
<div id="main">
</div>
</body>
</html>
ffUI.css***************************************
* {margin:0;padding:0;}
#main {width:320px;height:240px;overflow:hidden;}
#map {margin-top:0px;margin-left:0px;}
ffmain.js**************************************
mainFunction();
function mainFunction(){
$("#main").append('<div id="map"><image src="image/maptest.gif"></div>');
$(window).bind("keydown",mainKeyIvent);
}
function mainKeyIvent(e){
switch(e.keyCode){
case(38):
$("#map").animate({marginTop:"+=16px"});
break;
case(40):
$("#map").animate({marginTop:"-=16px"});
break;
case(37):
$("#map").animate({marginLeft:"+=16px"});
break;
case(39):
$("#map").animate({marginLeft:"-=16px"});
break;
}
}
というコードを書いて、RPGのMAPのように、
出した画像が上下左右のキーで16ピクセルずつ動くコードを書いてみたんですが、
一応動きはしますが、キーを押しっぱなしにすると、
その間にキーイベントが蓄積されて、右を押していたら、
キーを離してもずーっと右に動きっぱなしなってしまったりします。
押している間は動き続けてもいいですが、離した瞬間にちゃんと止まるようにしたいんですけど、
どのようにコーディングすればよいでしょうか?
環境はsafariです。
宜しくお願いしますm(__)m
No.2ベストアンサー
- 回答日時:
手っ取り早くやるならstopですかね。
$(window).keyup(function() { $("#map").stop(true); });
引数にtrueを渡せば、実行待ちしているアニメーション処理も削除してくれます。
キーを押し続けるとanimateメソッドが無駄に呼ばれ続け
無駄にキュー登録されますから、止めることを考えるより
無駄に呼び出さない方向で考えないとダメだと思いますけど。
ありがとうございます。
確かにstopも使えそうなんですが、キュー登録自体は増えてしまうのが難点で....
質問後も色々自分で試してみましたが、
function mainKeyIvent_parts(){
$(window).unbind("keydown",mainKeyIvent);
setTimeout(function(){$(window).bind("keydown",mainKeyIvent);},250);
}
という関数を組んで、キー入力があると、250ミリ秒間(これはアニメの速度によって手動調整)キー入力ができないようにしてみたら一応意図通りに動くようになりました。
ただ、stopの時の様にまだ何か落とし穴があるかもしれませんね、
難しい(泣)
No.1
- 回答日時:
おそらく、animate() は非同期処理なのでしょう。
http://api.jquery.com/animate/
アニメーション中は keydown しても animate() しないように #map をビジー状態にする必要があります。
animate() 処理に移る前に <div id="map" aria-busy="true"></div> のようにして、aria-busy="true" 中は animate() しないようにしてみてください。
http://www.hitachi.co.jp/universaldesign/wai-ari …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GASに文字列として関数を入れる...
-
addEventListener()でリスナー...
-
2段階プルダウンで1段階目の選...
-
スマホ上で、左右スワイプで次...
-
Outlookのアカウントがあるとメ...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
食材の期限を管理するためにGAS...
-
前回の質問の続き function mov...
-
このプログラムに、王手をかけ...
-
前回の質問の続き function mou...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
-
<div>のタッチ状態を維持したま...
-
jQueryでシンセサイザーを作っ...
-
プログラミング 学習
-
HTMLでサブフレームから親のス...
-
ジャバスクリプトについて。
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQueryBlockUIをフレーム内で動...
-
base64encodeでの文字化けについて
-
「jquery.csv2table.js」から生...
-
エレベーターメニューをON/OFF...
-
文字サイズの大中小について
-
Base64に変換したHTMLの<script...
-
マウスオーバーでリンク先サム...
-
プラグイン無しでContactform7...
-
使用テクノロジーを教えて下さい。
-
javascript外部読み込みの際の引数
-
jQuery UIのdraggableについて
-
jqueryを2つ設置した事で片方...
-
jqueryについて(Lightboxとbxs...
-
spinelzのjavascript使用方法
-
フォントサイズを変更するボタ...
-
<script>タグというのはどこか...
-
jqueryのcolorboxを読込直後に...
-
CrossSlideのスライドショーが...
-
prototipの設定
-
Camera slideshowの使い方について
おすすめ情報