問答収集 カテゴリ:Flashプログラミング
現在のスレッド一覧 / 新規に質問を投稿
レス数:4 / 状態:解決済み / No:75 / ATOM
1 名前:YH 日付:2010/11/13(土)02:50:07 ID:so9d79DTkyLI
http://hakuhin.jp/as/key.html#KEY_02
http://hakuhin.jp/as/key.html#KEY_03
キーボードが離された瞬間、および押された瞬間を検知するプログラミングはAS2.0の講座に記されてありますが、
AS3.0でこれと同じようなことを実現することは可能でしょうか。

キーが押された瞬間を検知し、サウンドが何度も流れるのを防ぎたいと考えています。

var a_sound:oto1 = new oto1();
var b_sound:oto2 = new oto2();
//左から出る音をoto1、右から出る音をoto2と指定


var a_sndTr:SoundTransform = new SoundTransform  ;
a_sndTr.volume = 1;
a_sndTr.pan = -1.0;
//oto1の設定

var b_sndTr:SoundTransform = new SoundTransform  ;
b_sndTr.volume = 1;
b_sndTr.pan = 1.0;
//oto2の設定


stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownFunc);

function KeyDownFunc(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.SPACE)
{
a_sound.play(0, 1, a_sndTr);
trace("スペースキーが押された");
}
}
//スペースキーが押されるとoto1を再生

stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownFunc2);

function KeyDownFunc2(event:KeyboardEvent):void
{
if (event.keyCode == 65)
{
b_sound.play(0, 1, b_sndTr);
trace("Aキーが離された");
}
}
//Aキーが押されるとoto2を再生


ご存知の方、伝授していただければ幸いです。
2 日付:2010/11/17(水)02:04:57 ID:8d7uAYrQHgxE
>AS3.0でこれと同じようなことを実現することは可能でしょうか。
可能です。
http://hakuhin.jp/as3/key_board.html#KEY_BOARD_02

KeyboardEvent.KEY_DOWN イベント
KeyboardEvent.KEY_UP イベント

…でキーボードが押された瞬間と離された瞬間が取得できるので
何らかの変数にキーの押下状態を残しておきます。

後は、Event.ENTER_FRAME イベント中で変数の値を確認すると
毎フレームごとにキーの押下状態を知ることが出来るので
1フレーム前の押下状態と、現在のフレームの押下状態を比較して判別できます。
3 名前:YH 日付:2010/11/18(木)02:03:28 ID:so9d79DTkyLI
回答ありがとうございます。
お答えいただいたことを自分なりに試してみます。
4 名前:状態変更 日付:2010/11/18(木)02:03:41 ID:so9d79DTkyLI
この質問の状態を『解決』に変更しました。
このスレッドについて
質問の状態 :
解決済み
投稿開始日 :
2010/11/13(土)02:50:07
投稿終了日 :
2010/11/18(木)02:03:41
投稿者 :
YH
レス総数 :
4
スレッド番号 :
75
MondoCollectionSystem ver.0x00020000 by Hakuhin