View Javadoc

    1   /*
    2    * All Rights Reserved.
    3    * Copyright (C) 1999-2005 Tsukuba Bunko.
    4    *
    5    * Licensed under the BSD License ("the License"); you may not use
    6    * this file except in compliance with the License.
    7    * You may obtain a copy of the License at
    8    *
    9    *       http://www.tsukuba-bunko.org/licenses/LICENSE.txt
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   * $Id: AudioClip.java,v 1.2 2005/08/19 03:18:11 ppoi Exp $
    18   */
    19  package tsukuba_bunko.peko.canvas.stage;
    20
    21  import	java.net.URL;
    22
    23
    24  /***
    25   * 音楽クリップの基本的な機能を提供します。
    26   * @author	$Author: ppoi $
    27   * @version	$Revision: 1.2 $ $Date: 2005/08/19 03:18:11 $
    28   */
    29  public abstract class AudioClip	{
    30
    31  	/***
    32  	 * クリップ ID
    33  	 */
    34  	private String	_id = null;
    35
    36  	/***
    37  	 * このクリップを管理する AudioPlayer
    38  	 */
    39  	private AudioPlayer	_player = null;
    40
    41  	/***
    42  	 * 再生クリップの URL
    43  	 */
    44  	private URL	_clipURL = null;
    45
    46  	/***
    47  	 * ループするかどうか
    48  	 */
    49  	private boolean	_isLoop = false;
    50
    51
    52  	/***
    53  	 * <code>AudioClip</code> のインスタンスを作成するためにサブクラスのコンストラクタから呼ばれます。
    54  	 * @param	id	クリップ ID
    55  	 * @param	clipURL	クリップの URL
    56  	 */
    57  	protected AudioClip( String id, URL clipURL )
    58  	{
    59  		super();
    60  		_id = id;
    61  		_clipURL = clipURL;
    62  	}
    63
    64
    65  	/***
    66  	 * このクリップのクリップ ID を取得します。
    67  	 * @return	クリップ ID
    68  	 */
    69  	public String getID()
    70  	{
    71  		return _id;
    72  	}
    73
    74  	/***
    75  	 * このクリップを管理する AudioPlayer を設定します。
    76  	 * @param	player	このクリップを管理する AudioPlayer
    77  	 */
    78  	public void setAudioPlayer( AudioPlayer player )
    79  	{
    80  		_player = player;
    81  	}
    82
    83  	/***
    84  	 * このクリップを管理する AudioPlayer を取得します。
    85  	 * @return	このクリップを管理する AudioPlayer
    86  	 */
    87  	public AudioPlayer getAudioPlayer()
    88  	{
    89  		return _player;
    90  	}
    91
    92  	/***
    93  	 * このクリップのソースデータの URL を取得します。
    94  	 * @return	このクリップのソースデータの URL
    95  	 */
    96  	public URL getClipURL()
    97  	{
    98  		return _clipURL;
    99  	}
    100
    101 	/***
    102 	 * このクリップの再生をループするかどうかを判定します。
    103 	 * @return	ループする場合 <code>true</code>、しない場合 <code>false</code>
    104 	 */
    105 	public boolean isLoop()
    106 	{
    107 		return _isLoop;
    108 	}
    109
    110 	/***
    111 	 * このクリップを再生を開始します。
    112 	 * @param	loop	ループする場合は <code>true</code>、しない場合は <code>false</code>。
    113 	 */
    114 	public void play( boolean loop )
    115 	{
    116 		_isLoop = loop;
    117 		play();
    118 	}
    119
    120 	/***
    121 	 * このクリップの再生を開始します。
    122 	 */
    123 	public abstract void play();
    124
    125 	/***
    126 	 * このクリップの再生を停止します。
    127 	 */
    128 	public void stop()
    129 	{
    130 		stop( AudioPlayer.STOP_WITH_SYNC_FADEOUT );
    131 	}
    132
    133 	/***
    134 	 * このクリップの再生を停止します。
    135 	 * @param	mode	停止モード
    136 	 */
    137 	public abstract void stop( int mode );
    138
    139 	/***
    140 	 * 演奏が終了したことを AudioPlayer に通知します。
    141 	 */
    142 	protected void playingFinished()
    143 	{
    144 		AudioPlayer	player = getAudioPlayer();
    145 		if( player != null )	{
    146 			player.unregister( this );
    147 		}
    148 	}
    149 }