1

音楽を再生する非常に単純なフラッシュ プログラムがあります。再生一時停止ボタンと曲の現在位置を示すタイマーで構成されています。通常のフォームボタンを使用して曲を一時停止または再生できるようにしようとしています。

<div class="musicplayer_playpause">
            <script type="text/javascript">
            AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','65','height','68','src','player','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','wmode','transparent','id','flashobject','movie','player','flashvars','id=<?=$cur_songid;?>&type=<?=$_GET["type"];?>&csid=<?=$cur_songid;?>&l=<?=$Arrcntt+1;?>"' ); //end AC code
            </script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" id="flashobject" width="65" height="68">
              <param name="movie" value="player.swf" allowscriptaccess="always"/>
              <param name="quality" value="high" />
              <param name="wmode" value="transparent" />
        <param name="id" value="flashobject" />
        <param name="swliveconnect" value="true" />
              <embed src="player.swf" name="flashobject" width="65" height="68" quality="high" allowscriptaccess="always" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" wmode="transparent" swliveconnect="true" ></embed>
          </object>
          </noscript></div>

セクションに入れているJavascript関数は次のとおりです。

<script type="text/javascript">
function Pause() {
var flash =  document.getElementById('flashobject');
flash.PlayPause;
}
</script>

そして最後に、私が使用しているボタンは次のとおりです。

<form>
<input type="button" value="Play" name="Play" onClick="Pause();"> 
</form>

ボタンをクリックすると、Firefox のエラー コンソールに「Flash is null」と表示されます。

4

4 に答える 4

3

それがあなたの問題の直接的な解決策だとは思いませんが、経験から、

var flash =  document.getElementById('flashobject');
flash.PlayPause;

すべての一般的なブラウザで同じ動作を示すわけではありません。次の関数を使用してオブジェクトを返すことができます。

function thisMovie(movieName) {
  if(navigator.appName.indexOf("Microsoft") != -1) {
    return window[movieName];
  } else {
    return document[movieName];
  }
};
thisMovie('flashobject').PlayPause();

ただし、jQuery を使用している場合は、次のようになります。

$("#flashobject")[0].PlayPause();

編集: thisMovie 関数のより更新されたバージョンを見つけました。私はまだjQueryの方法をお勧めします:)

function getFlashMovieObject(movieName){
  if(document.embeds[movieName])
    return document.embeds[movieName];
  if(window.document[movieName])
    return window.document[movieName];
  if(window[movieName])
    return window[movieName];
  if(document[movieName])
    return document[movieName];
  return null;
}
于 2010-02-09T14:31:09.327 に答える
1

Pause を含むスクリプト タグの形式が正しくありません。type 属性に末尾の引用符を追加します。

さらに、AC_FL_RunContent は映画の ID を定義していません。さらに 4 つのパラメーター (「id」、「flashobject」、「name」、「flashobject」) を追加します。

AC_FL_RunContent は、この Adob​​e テクニカルノートhttp://kb2.adobe.com/cps/127/tn_12701.htmlで説明されており、次のように書かれています。

  • id (オブジェクトの属性、オブジェクトのみ)
    映画識別子。スクリプト言語を使用して参照できるように、ホスト環境 (Web ブラウザなど) に対して Flash ムービーを識別します。
  • name (埋め込みのみ) 映画の名前。JavaScript や VBScript などのスクリプト言語を使用して Flash ムービーを参照できるように、ホスト環境 (通常は Web ブラウザー) に対して Flash ムービーを識別します。
于 2010-02-09T13:35:37.430 に答える
0

Jasperには適切なJavaScriptメソッドがありますが、ASがそれらをリッスンすることを認識できるように、ActionScriptでJS関数のコールバックを追加する必要もあります。

ASコード:

import flash.external.ExternalInterface;
ExternalInterface.addCallback("PlayPause", playPauseMovie);
...
function playPauseMovie():void {
   //code goes here
}
于 2011-03-12T05:20:00.993 に答える
0

これを見つけてください:<param name="movie" value="player.swf" allowscriptaccess="always"/> で置き換えます

 <param name="movie" value="player.swf" />
   <param name="allowScriptAccess" value="always" />

私はまだジャスパーの機能を使用します

于 2010-02-09T15:30:06.843 に答える