2009-11-04 3 views
0

Это мой AC3 кодExternalInterface.addCallback не работает

private function uploadet(dosya:String):void { 

     var uploader:URLRequest = new URLRequest(dosya); 
      localFile.upload(uploader); 
    } 


     var a = flash.external.ExternalInterface.addCallback("uploadet",uploadet); 

И это Javascript

<script type="text/javascript" src="swfobject.js"></script> 
     <script type="text/javascript"> 

     swfobject.registerObject("myId", "9.0.0", "expressInstall.swf"); 



     function uploadet(dosya){ 
     var myFlashMovie = swfobject.getObjectById("myId"); 
     myFlashMovie.uploadet(dosya); 
     } 

     </script>   


<style type="text/css"> 
<!-- 
body { 
    background-color: #e6e6e6; 
    margin-top: 50px; 
} 
--> 
</style></head> 
    <body > 
     <object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120"> 
       <param name="movie" value="SimpleUploader.swf" /> 
       <!--[if !IE]>--> 
       <object type="application/x-shockwave-flash" data="SimpleUploader.swf" width="300" height="120"> 
       <!--<![endif]--> 
       <div> 

       </div> 
       <!--[if !IE]>--> 
       </object> 
       <!--<![endif]--> 
      </object> 
      <div id="flash" align="center"> 

      </div> 

     <div align="center"><b>Javascript Feedback:</b></div> 
     <div align="center" id="output"></div>   

     <input type="button" name="Submit" value="Submit" onclick="uploadet('dsadsa.php');" /> 

Я не могу заставить его работать, любая помощь приветствуется.

Благодаря

ответ

0

Ваша проблема заключается в том, что вы, вероятно, не достигая правильного <OBJECT> элемента с помощью:

var myFlashMovie = document.getElementById('simpleUploader'); 

ваших вложенных тегов имеют один и тот же идентификатор атрибута, создавая неожиданные результаты.

Чтобы включить флеш-фильм и использовать метод swfobject.getObjectById(), вы должны использовать SWFObject (широко известную и используемую библиотеку флэш-памяти) для правильного доступа к тегам <OBJECT>.

Чтобы узнать больше о SWFObject, перейдите по этой ссылке:

http://code.google.com/p/swfobject/

Это начинающих учебник доступны от Adobe (для SWFObject):

http://www.adobe.com/devnet/flashplayer/articles/swfobject.html

Посмотрите на getObjectById() в API по следующей ссылке:

http://code.google.com/p/swfobject/wiki/api

+0

да, я сделал SWFObject и отредактировал мой вопрос, но он по-прежнему не работает. –

+0

Mind предоставляет некоторое сообщение об ошибке? что происходит, когда оно не работает? –

5

необходимо установить флеш-приложение на веб-сервере, чтобы проверить его (или сделать себя локальным веб-сервером). Flash Player не позволит вам использовать внешний интерфейс, если вы загружаете файл с локального хоста в файл (файл: /// c: .....).

+0

Действительно, это решило проблему в моем случае. Большое спасибо. –

1

Вы не можете использовать ExternalInterface, не позволяя создавать скрипты при встраивании SWF, прочитайте этот документ Adobe Knowledge Base для получения дополнительной информации. Другими словами, используйте этот HTML-код, если вы встраивание его непосредственно на странице:

<object ... > 
    . 
    . 
    . 
    <param name="allowScriptAccess" value="always"/> 
</object> 

Или следующее, если вы используете SWFObject:

var parametersObj = { allowScriptAccess: "always" }; 
swfobject.embedSWF(
    swfPath, 
    targetElement, 
    swfWidth, 
    swfHeight, 
    minFlashVersion, 
    expressInstall, 
    flashvarsObj, 
    parametersObj, 
    attributesObj 
); 
2

Не используйте метод getObjectById, чтобы получить swf объект. Вы можете использовать следующий код:

swfobject.registerObject("myId", "9.0.0", "expressInstall.swf", callbackFn); 
function callbackFn(status) { 
    if (status.success) { 
    var obj = status.ref; 
    document.getElementById("but1").onclick = function() { 
     if (obj && typeof obj.uploadet!= "undefined") { 
     obj.uploadet(dosya); 
     } 
     }; 
} 

Подробнее вы можете обратиться к Static Embed method:Browser communication test page with callback

Dynamic Embed method:Browser communication test page with callback и

+0

Возможно, это не решило его проблему, но она решила мою проблему. Я считаю, что это актуально. –

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