2010-02-09 4 views
1

음악을 재생하는 아주 간단한 플래시 프로그램이 있습니다. 재생 일시 중지 단추와 노래의 현재 위치를 보여주는 타이머로 구성되어 있습니다. 나는 그것을 일시 중지하거나 일반 양식 버튼을 사용하여 노래를 재생할 수 있도록 노력하고있어. 마침내 여기자바 스크립트를 ActionScript와 대화 할 수없는 이유는 무엇입니까?

<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> 

나는 파이어 폭스의 버튼을 클릭

<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> 

여기에 내가 절에 넣어 자바 스크립트 함수는이다 오류 콘솔에 "플래시가 null입니다"라고 표시됩니다. 내가 뭘 잘못하고 있습니까?

+0

당신은 자바 스크립트 요소는 인용 부호가 누락입니다. 문제가 해결되면 알려주므로 답으로 게시 할 수 있습니다. – Anthony

+0

고마워,하지만 지금은 "Flash is Null"이된다. –

답변

1

일시 중지가 포함 된 스크립트 태그의 형식이 잘못되었습니다. 후행의 인용 부호를 type 속성에 추가합니다.

또한 AC_FL_RunContent가 영화의 ID를 정의하지 않습니다. 추가로 4 개의 매개 변수 - 'id', 'flashobject', 'name', 'flashobject'를 추가하십시오.

는 AC_FL_RunContent이 말한다이 어도비 기술 노트 http://kb2.adobe.com/cps/127/tn_12701.html에 설명되어 있습니다 :

  • ID
    영화 식별자 (속성 개체에 대해 만 개체). 호스트 환경에 대한 플래시 동영상 (예 : 웹 브라우저)을 식별하여 이 스크립팅 언어를 사용하여 참조 될 수 있도록합니다.
  • 이름 (포함 만) 영화 이름입니다.호스트 환경 (웹 브라우저, 일반적으로 )으로 플래시 동영상을 식별하므로 이 스크립팅 언어 (예 : JavaScript 또는 VBScript)을 사용하여 참조 될 수 있습니다.
+0

고마워! 하지만 지금은 "플래시가 null입니다." 나는 이것에 대한 도움을 정말로 사용할 수있다. –

+0

AC_FL_Runcontent에 태그를 추가했지만 여전히 "플래시가 null"입니다. –

+0

변경 사항을 모두 적용했지만 (위 편집 참조) 여전히 "플래시가 null"입니다. –

3

나는이 문제에 대한 직접적인 해결책 생각하지 않습니다,하지만 난

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

모든 인기있는 브라우저에서 동일한 동작을 표시하지 않습니다 사용하는 것을 경험을 통해 알고있다. 당신은 그러나 jQuery를 사용하는 경우

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

, 다음을 수행합니다 :

$("#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; 
} 
+0

버튼을 클릭하면 "thisMovie ('flashobject')가 정의되지 않았습니다. '라는 메시지가 나타납니다. –

0

를 추천 할 것입니다 : <param name="movie" value="player.swf" allowscriptaccess="always"/> 나는 아직도 재스퍼의 기능

0

재스퍼 사용 권리 자바 스크립트 메소드를 가지고 것

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

로 교체하지만, 또한 ActionScript에서 JS 함수에 대해 add callbacks이 필요하므로 AS가이를 수신 대기합니다. 코드 AS

:

import flash.external.ExternalInterface; 
ExternalInterface.addCallback("PlayPause", playPauseMovie); 
... 
function playPauseMovie():void { 
    //code goes here 
} 
관련 문제