プロが教える店舗&オフィスのセキュリティ対策術

今現在、Flash CS5.5 AS3.0 でちょっとしたゲームを作っています。
大砲を撃った時の反動として、ゲーム画面を揺らして迫力を出そうと思ったのですが
AS3.0でそのようなことはできるのでしょうか?

A 回答 (2件)

その揺らす「ゲーム画面」とは


作成した Flash 内部全体ということでしょうか?

良くわからないので
とりあえずそういうことで話を進めます。


当然ながら「画面を揺らす」という関数やメソッド(イベントリスナー)は存在しないわけですから,
「画面を揺らすとはどういうことであるのか」を自分自身で考えて定義し
それをスクリプトとしてコーディングして行く必要があると思います。

下のスクリプト例は
私が「画面を揺らすとはどういうことであるのか」を考えて定義してみた例です。

ステージ上に適当に何かを配置して
(何かを置かないと振動の様子が見えないため)
メインのタイムラインのフレーム1に書くスクリプトです。



//=============================================
//Timerインスタンス「vibrate_tm」を作成
//(20 ミリ秒間隔で 100 回実行)
var vibrate_tm:Timer=new Timer(20,100);

//Timerインスタンスに振動させるイベントリスナーを登録
vibrate_tm.addEventListener(TimerEvent.TIMER,vibrateStage);

//振動させるイベントリスナーの定義
function vibrateStage(e:TimerEvent) {
//メインタイムラインの座標をランダムな±5にする
root.x=Math.random()*10-5;
root.y=Math.random()*10-5;
//表示を即更新
e.updateAfterEvent();
}

//振動を開始させるイベントリスナーの定義
function startVibration(e:Event) {
//タイマーをリセット
vibrate_tm.reset();
//タイマー開始
vibrate_tm.start();
}

//---↓仮の振動開始イベント↓----

//ステージ上でマウスアップしたときに振動開始
stage.addEventListener(MouseEvent.MOUSE_UP,startVibration);
//=============================================



上では 「仮の振動開始イベント」 として
Flash の画面の任意の位置でマウスアップ(クリック)したときに
Flash の画面全体を動かすようにしています。

実際には何が起こったときに振動を開始させるのかは知りません。

もし仮に
「上のスクリプトを書いたフレームが表示されたときに振動を開始」させるのでしたら
最後のイベントリスナーなどは不要になって
次のようにもっと短くなります↓。

//=============================================
//Timerインスタンス「vibrate_tm」を作成
//(20 ミリ秒間隔で 100 回実行)
var vibrate_tm:Timer=new Timer(20,100);

//Timerインスタンスに振動させるイベントリスナーを登録
vibrate_tm.addEventListener(TimerEvent.TIMER,vibrateStage);

//振動させるイベントリスナーの定義
function vibrateStage(e:TimerEvent) {
//メインタイムラインの座標をランダムな±5にする
root.x=Math.random()*10-5;
root.y=Math.random()*10-5;
//表示を即更新
e.updateAfterEvent();
}

//タイマー開始
vibrate_tm.start();
//=============================================

 

※ なお...
揺らす「ゲーム画面」とは
Flash 内部ではなくて
「HTML に貼り付けた Flash 自体」だったり
「ブラウザごと」揺らすような場合でしたら ActionScript ではなく JavaScript などになりますよ。
(もし「パソコンのモニタ」を揺らすのでしたら ActionScript でも JavaScript でも無理でしょう。)
    • good
    • 0

「画面の中」を揺らすのであれば、ルートのムービークリップのx/yプロパティを連続的に変化させればOKですし、「画面=ウィンドウごと」動かすのであれば、ExternalEventを使い、同様の機能を持ったjavascriptを起動すればOKです。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!