2011-12-15 4 views
0

Я пытаюсь создать простой аудиоплеер, который вызывает функцию js при щелчке, он отлично работает во всех браузерах, кроме IE. я не могу понять, какая проблема!flash as3 плеер не работает в IE

здесь HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
    <title>player</title> 
    </head> 
    <body > 

    <![if !IE]> 
    <object type="application/x-shockwave-flash" classid="bla" width="18" height="30"    id="myFlashMovie"> 
<param name="wmode" value="opaque" /> 
<param name="FlashVars" value="mp3.mp3" /> 
<embed type="application/x-shockwave-flash" width="18" height="30"  src="player%2Eswf" id="flashObj" FlashVars="audioTrackPath=mp3%2Emp3" /> 
    </object> 
    <![endif]> 

    <!--[if IE]> 
    <object type="application/x-shockwave-flash" classid="clsid:d27cdb6e-ae6d-11cf- 96b8-444553540000" width="18" height="30" id="movie" allowScriptAccess="sameDomain" > 
    <PARAM NAME="movie" id="movie" value="player%2Eswf?audioTrackPath=mp3%2Emp3"/> 
<PARAM NAME="FlashVars" value="mp3%2Emp3" /> 
<PARAM NAME="allowScriptAccess" value="always" /> 
    <![endif]-->  


    <script type="text/javascript"> 
    alert("Hello World"); 
    </script> 
    <noscript>Sorry, your browser does not support JavaScript!</noscript> 

    <script type="text/javascript"> 
    function countdown() { 
      alert("countdown"); 
       } 
    </script> 
    </body> 
    </html> 

и вот как:

import flash.media.Sound; 
    import flash.media.SoundLoaderContext; 
    import flash.net.URLRequest; 
    flash.system.Security.allowDomain("http://localhost"); 



    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; 
    var audioTrackPath:String = String(paramObj['audioTrackPath']); 


    stop(); 
    play_btn.addEventListener(MouseEvent.CLICK, playSound); 

    function playSound (e:MouseEvent):void{ 
try { 
    ExternalInterface.call("countdown"); 
    } catch(e:Error) { 
    trace(e) 
    } 
//ExternalInterface.call("countdown"); 
gotoAndStop(2); 
var soundClip:Sound; 
var soundChannel:SoundChannel = new SoundChannel(); 

function init() { 
    soundClip = new Sound(); 
    soundClip.addEventListener(ProgressEvent.PROGRESS, soundLoading); 
    soundClip.addEventListener(Event.COMPLETE, soundLoaded); 

    var req:URLRequest = new URLRequest(audioTrackPath); 
    var context:SoundLoaderContext = new SoundLoaderContext(1000, true); 
    soundClip.load(req,context); 
    //soundChannel = soundClip.play(); 
} 

init(); 

function soundLoaded(e:Event) { 
    soundChannel = soundClip.play(); 

} 

function soundLoading(e:ProgressEvent) { 
// preloader information goes here 
    trace(String(int(100*e.bytesLoaded/e.bytesTotal))+"%"); 
} 

stop_btn.addEventListener(MouseEvent.CLICK, stopSound); 
    function stopSound (e:MouseEvent):void{ 
    gotoAndStop(1); 
    soundChannel.stop(); 
} 

}

я был googleing в течение 3 дней в настоящее время, но я не могу показаться, чтобы найти ответ. ..

ответ

1

Вы должны заявили, что проблема ExternalInterface.call() не работает в первую очередь.

Создание простого проекта с помощью всего внешнего интерфейса вызова как

if(ExterlInterface.available){ 
    ExternalInterface.call('alert','ExterlInterface.available'); 
} 

на первом кадре (при использовании вспышки) и опубликовать его

это даст вам следующий HTML

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>ei</title> 
</head> 
<body bgcolor="#ffffff"> 
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="ei" align="middle"> 
    <param name="allowScriptAccess" value="sameDomain" /> 
    <param name="allowFullScreen" value="false" /> 
    <param name="movie" value="ei.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <embed src="ei.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="ei" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /> 
    </object> 
</body> 
</html> 

Если это не удается, то это ваш браузер, вызывающий проблемы, отлично подходит для меня. Если он работает, ваш html плохой.

+0

миллион спасибо за это, я получил ее для работы только в крайнее время :) –

0

Кажется, что в объекте отсутствует параметр фильма. В разных браузерах используются разные теги, из которых они берут информацию о вспышках - некоторые используют embed, некоторые используют объект.

попробовать этот HTML

<object type="application/x-shockwave-flash" classid="bla" width="18" height="30"    id="myFlashMovie"> 
<param name="movie" value="player.swf"> 
<param name="wmode" value="opaque" /> 
<param name="FlashVars" value="mp3.mp3" /> 
<embed type="application/x-shockwave-flash" width="18" height="30"  src="player.swf" id="flashObj" FlashVars="audioTrackPath=mp3.mp3" /> 
    </object> 

я бы также поставить ссылку на файл непосредственно в URL-адрес

<param name="movie" value="player.swf?audioTrackPath=mp3.mp3"> 
+0

Я думаю, что вы неправильно поняли мой вопрос, мне нужна часть IE для работы, первая часть работает нормально. Игрок работает в IE, но я не могу заставить его называть js! я сделал то, что вы сказали, до сих пор не улучшилось! –

0

Заменить это:

<param name="FlashVars" value="mp3.mp3" /> 

С этим:

<param name="FlashVars" value="audioTrackPath=mp3.mp3" /> 

FlashVars - пары с именем-значением.

Ognjen, не принимайте это неправильно, но в качестве совета вместо «googleing for 3 days», в следующий раз вы можете приложить некоторые усилия для коррекции кода.

+0

Я думаю, что вы неправильно поняли мой вопрос, мне нужна часть IE для работы, первая часть работает нормально. Игрок работает в IE, но я не могу заставить его называть js!я сделал то, что вы сказали, до сих пор не улучшилось! - –

0

выглядит, как вы должны изменить ClassID от bla к clsid:d27cdb6e-ae6d-11cf-96b8-444553540000
также проверить мой аналогичный opensource project (который, однако, не работает в IE 6, но штраф в более новых версиях)

+0

спасибо, но для ie мой classid является clsid: d27cdb6e-ae6d-11cf-96b8-444553540000. Я все еще пытался изменить его и не повезло. любые другие идеи? –

+0

@Ognjen Božičković - какова ваша версия? ли ссылки на http://www0z0k.narod.ru/ (моя демонстрационная страница проекта) вызывают воспроизведение звука и изменение цвета ссылок в т. е.? также попробуйте передать какой-либо аргумент вашей функции js – www0z0k

+0

ваша страница работает в моем ie8, я попробую передать некоторые аргументы, может быть, это сделает трюк! спасибо за эту идею, если вы думаете о чем-то другом, просто опубликуйте ее :) –

Смежные вопросы