クリックを一定間隔でクリックした場合と、押しっぱなしにした場合とで別のショットが打てるようにします。
(Flash8使用)
正攻法じゃなくて、簡易版を作ろうとしたら
ぐちゃぐちゃになった・・・・
ど素人なので、苦情はご遠慮下さい(^^;
別に、こんな事しなくても、
クリックし直す度に武器用の変数切り替えたら
簡単に複数個の武器を切り替えられるんじゃない?
といったツッコミもご遠慮下さい(笑)
変数は分かり易いようにと全部_rootを付けてますが、
逆に分かり辛いかも(^^;
要素数10の配列と。変数を2個作ります。
名前は何でも良いです。
(最初に初期化しておかないとエラーになります)
_root.shot = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
_root.shotflag = 0;
_root.shotsum = 0;
仕組みとしては、
マウスを押すと毎フレーム配列に1が入るようになる
マウスを離すと毎フレーム配列に0が入るようになる
で、この配列の合計を監視します。
1.
配列の合計が10なら、マウスは押しっぱなしなので、ショット1を発射。
2.
配列の合計が0なら、マウスは暫く押されていないのでショットを止める。
3.
配列の合計が1〜9なら、マウスは押しっぱなしでもなく
離しっぱなしでもないので、軽く連打していると判断してショット2を発射。
書く場所はどこでも良いと思いますが、
ここでは自機のMCに直接記述したとします。
動きとしては、こんな感じになります
(マウス操作。クリックで発射。)
onClipEvent (mouseDown) {
_root.shotflag = 1;
}
onClipEvent (mouseUp) {
_root.shotflag = 0;
}
//マウスを押したら_root.shotflagに1を
//離したら_root.shotflagに0を入れます
onClipEvent (enterFrame) {
//毎フレーム実行させます。
_root.shot.unshift(_root.shotflag);
_root.shot.pop();
//unshiftを使って配列の先頭にマウスが押されていれば1
//押されていなければ0を挿入します。
//挿入して配列要素が1個増えたので最後尾をpop()で削除。
for (i=0; i<10; i++) {
_root.shotsum += _root.shot[i];
}
//現在の配列の合計値を_root.shotsumに集計します。
if (_root.shotsum == 10) {
【ここにショット1発射の処理】;
} else if (_root.shotsum == 0) {
【ここにショットを止める処理】;
} else {
【ここにショット2発射の処理】;
}
//【】内の処理は省略しています。各自でどうぞ
_root.shotsum = 0;
//最後に配列の合計値を0に戻しておきます。
}
上記を全部まとめて書くと
onClipEvent (mouseDown) {
_root.shotflag = 1;
}
onClipEvent (mouseUp) {
_root.shotflag = 0;
}
onClipEvent (enterFrame) {
_root.shot.unshift(_root.shotflag);
_root.shot.pop();
for (i=0; i<10; i++) {
_root.shotsum += _root.shot[i];
}
if (_root.shotsum == 10) {
【ここにショット1発射の処理】;
} else if (_root.shotsum == 0) {
【ここにショットを止める処理】;
} else {
【ここにショット2発射の処理】;
}
_root.shotsum = 0;
}
まあ何だか無理やりですが、動いたからいいや・・・・