Macromedia Flash非公式テクニカルノート

Sound.onLoadが実行されない

ID: FN0211001 Product: Flash

Platform: All
Version: 6.0 and above

1. 現象
イベントハンドラメソッド'Sound.onLoad'を定義して'Sound.loadSound'で外部MP3ファイルを読込んだときに、ロードが完了したにも拘わらず'onLoad'メソッドが呼出されないことがあります。とくに、ローカルファイルを読込んだ場合や、サーバーからの2回目以降のロードでデータにキャッシュが残っている場合に発生します。

2. 原因
'Sound.loadSound'を実行した後に'Sound.onLoad'イベントハンドラメソッドを定義すると、その'function'定義時にはすでにロードは完了してしまうことがあります。とくに、ローカルのファイルやデータがキャッシュに残っていて、サウンドファイルの読込みが早い場合に、現象が発生します。

// [問題が発生するスクリプトの例]
// フレームアクション
my_sound = new Sound(this);
my_sound.loadSound("test.mp3", false);   // サウンドファイルのロード実行
my_sound.onLoad = function(success) {   // 【この定義時にはロードが完了していることがある】
  this.start();
};

3. 対処法
'Sound.loadSound'の実行前に、イベントハンドラメソッド'Sound.onLoad'を定義してください。

// フレームアクション
my_sound = new Sound(this);
my_sound.onLoad = function(success) {   // まずイベントハンドラメソッドを定義
  this.start();
};
my_sound.loadSound("test.mp3", false);   // その後サウンドファイルのロードを実行 

_____

作成者: 野中文雄
協力者: Flash ActionScript ML
作成日: 2001年11月11日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.