[Prev]
[Home]
[Next]
第3回 タイムライン制御
担当者: 斎藤進也 (saitos@fc.ritsumei.ac.jp)
★本日のテーマ
本日は、ActionScriptによるムービー管理の基本となる「タイムライン制御」を中心に講義を進める。
また、当たり判定、メニューボタンの動的配置といったインタラクティブ・コンテンツ制作における頻出テクニックを紹介する。
★タイムライン制御
素材ファイル →
[download]
- 再生ヘッドの移動:ファイルの再生や停止、指定したフレームへの移動
MovieClip.stop();
|
ムービークリップの再生ヘッドを停止する。
|
※ MovieClipの部分には、インスタンス名を書く。
MovieClip.
play();
|
ムービークリップの再生ヘッドをを”再生状態”にする。
|
MovieClip.
gotoAndStop(フレーム);
|
再生ヘッドを特定のフレームに移動させて停止させる。
|
MovieClip.
gotoAndPlay(フレーム);
|
再生ヘッドを特定のフレームに移動させて、そこから再生状態にする。
|
play_btn.addEventListener(MouseEvent.MOUSE_DOWN,onPlay);
stop_btn.addEventListener(MouseEvent.MOUSE_DOWN,onStop);
woman_btn.addEventListener(MouseEvent.MOUSE_DOWN,onWomanStart);
start_btn.addEventListener(MouseEvent.MOUSE_DOWN,onGoToFirst);
function onPlay(evt:MouseEvent){
play();
trace("現在のフレームは="+currentFrame);
}
function onStop(evt:MouseEvent){
stop();
trace("現在のフレームは="+currentFrame);
}
function onWomanStart(evt:MouseEvent){
gotoAndPlay(28);
trace("現在のフレームは="+currentFrame);
}
function onGoToFirst(evt:MouseEvent){
gotoAndStop(1);
trace("現在のフレームは="+currentFrame);
}
|
※ この場合、メインタイムラインの制御であるため、MovieClip.Play()などのMovieClip.の部分が省略できる。
- 入れ子構造のインスタンスのタイムライン制御
素材ファイル
→[download]
"入れ子"の"子"となっているMovieClipのタイムラインも、ターゲットパスの指定次第で自由に制御できる。
このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。

boy.hikou_1.addEventListener(MouseEvent.MOUSE_OVER,disp_a);
boy.hikou_1.addEventListener(MouseEvent.MOUSE_OUT,disp_b);
boy.hikou_2.addEventListener(MouseEvent.MOUSE_OVER,disp_c);
boy.hikou_2.addEventListener(MouseEvent.MOUSE_OUT,disp_d);
boy.hikou_3.addEventListener(MouseEvent.MOUSE_OVER,disp_e);
boy.hikou_3.addEventListener(MouseEvent.MOUSE_OUT,disp_f);
/* 秘孔1のイベントハンドラ */
function disp_a(e:MouseEvent){
boy.hikou_1.gotoAndStop(2);
}
function disp_b(e:MouseEvent){
boy.hikou_1.gotoAndStop(1);
}
/* 秘孔2のイベントハンドラ */
function disp_c(e:MouseEvent){
boy.hikou_2.gotoAndStop(3);
}
function disp_d(e:MouseEvent){
boy.hikou_2.gotoAndStop(1);
}
/* 秘孔3のイベントハンドラ */
function disp_e(e:MouseEvent){
boy.hikou_3.gotoAndStop(4);
}
function disp_f(e:MouseEvent){
boy.hikou_3.gotoAndStop(1);
}
|
★インタラクティブ・コンテンツ作成テクニックス(1)
★接触(当たり)判定 hitTestObjectメソッド
サンプルファイル
→[download]
DisplayObject.hitTestObject(DisplayObject );
|
ある表示オブジェクト(含MovieClip)が、他の表示オブジェクトと接触しているかどうかを調べ
る。 接触している場合にはtrueを返し、してい
ない場合にはfalseを返す。
|
※接触判定に使われるのは、表示オブジェクトの形状ではなく、表示オブジェクトの境界ボックスである。
※上記のDisplayObjectの部分にはインスタンス名を書く。
このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。

//ステージにイベントリスナーを登録する。イベント=キーが押された時。
stage.addEventListener(KeyboardEvent.KEY_DOWN,keydown);
function keydown(event:KeyboardEvent) {
//「←」キーが押された場合
if (event.keyCode == 37) {
//もし、carとhitmanの接触判定が偽ならば
if (car.hitTestObject(hitman)==false) {
car.x -= 10;
} else {
//carとhitmanの接触判定が真ならば
trace("当たった!!!");
hitman.gotoAndStop(2);
}
//「→」キーが押された場合
} else if (event.keyCode == 39) {
car.x += 10;
if (hitman.currentFrame == 2) {
hitman.gotoAndStop(1);
}
}
}
|
▼ 次週の内容をちょっと先取り
★サウンドの制御
ActionScript3.0によってサウンドを制御する場合、以下の3つの方式が考えられる。
方式 | 説明 |
埋め込みアセットクラス方式 | 「ライブラリ」内に読み込んで使用する。サウンドファイルは、埋め込み"アセットクラス"として登録される。 |
読み込み方式 | Flashムービーとは別にMP3ファイルを用意し、ムービー再生時にSoundクラスのloadメソッドを使って読み込み、再生を行う。 |
タイムライン配置方
式 | 任意のムービークリップのタイムラインにサウンドを配置しておき、そのムー
ビークリップを再生することで、サウンドを鳴らす。
|
ここでは、「埋め込みアセットクラス方式」によるサウンド制御の手順について解説する。
☆指示に従いながら、プログラミングしてみましょう。
(1)音源を用意する。
インターネット上には、無料で音源を提供しているサイトが多く存在する。
ただし、それらのサイトを利用する際には、
利用規約をしっかりと守る必要がある。
また、利用規約はサイトによって異なるため、注意が必要。
●フリー音源提供サイトのリンク集
ここでは、「
音の葉っぱ~効果音・ジングル・BGMのフリー音素材集~」より、音源を借用させて戴いた。
(2)音源(mp3ファイル)をライブラリに読み込み、リンケージの設定(クラス名の設定)を行う。
リンケージの設定。クラス名を付ける。
(2)ActionScriptの記述
まず、new演算子を用いて、インスタンスを作成する。
具体的には、次のように記述する。
Sound型の変数に代入するというかたちをとる。
var s:Sound = new sound_1();
|
play()メソッド、stop()メソッドを用いて、再生/停止する。
※Soundの部分は、使用する変数名がくる。上記の例でいうと「s」。「s.play();」となる。
また、サウンドの再生時に、それを「サウンドチャネル」に割り当てておくと、サウンドを制御する際に便利である。
SoundChannel型の変数を宣言し、サウンドの再生時に返される値をそこに格納するというかたちをとる。
var s_channel:SoundChannel = s.play();
|
サウンドを停止する場合は、下記のように書く。
SoundChannel.stop();
|
管理しているサウンドを停止する。
|
上記の例に当てはめると、
[※ミスに注意!!]上記の例でいうと、「s.stop();」としがちだが、これではダメ。
サンプル1