2012-03-20 2 views
0

Я использую следующий код AS для вызова функции javascript, которая вернет мне требуемое значение.Action Script ExternalInterface.call() Проблема

package 
{ 
    import flash.display.Sprite; 
    import flash.media.Camera; 
    import flash.media.Video; 
    import flash.display.BitmapData; 
    import flash.display.Bitmap; 
    import flash.events.MouseEvent; 
    import flash.net.FileReference; 
    import flash.utils.ByteArray; 
    import com.adobe.images.JPGEncoder; 
    import flash.external.ExternalInterface; 

    public class Main extends Sprite 
    { 
     private var camera:Camera = Camera.getCamera(); 
     private var video:Video = new Video(); 
     private var bmd:BitmapData = new BitmapData(320,240); 
     private var bmp:Bitmap; 
     private var fileReference:FileReference = new FileReference(); 
     private var byteArray:ByteArray; 
     private var jpg:JPGEncoder = new JPGEncoder(); 
     var id:int; 





     public function Main():void 
     { 

      saveButton.visible = false; 
      discardButton.visible = false; 

      saveButton.addEventListener(MouseEvent.MOUSE_UP, saveImage); 
      discardButton.addEventListener(MouseEvent.MOUSE_UP, discard); 
      capture.addEventListener(MouseEvent.MOUSE_UP, captureImage); 

      if (camera != null) 
      { 
       video.smoothing = true; 
       video.attachCamera(camera); 
       video.x = 140; 
       video.y = 40; 
       addChild(video); 
      } 
      else 
      { 
       trace("No Camera Detected"); 
      } 
     } 

     private function captureImage(e:MouseEvent):void 
     { 
      bmd.draw(video); 
      bmp = new Bitmap(bmd); 
      bmp.x = 140; 
      bmp.y = 40; 
      addChild(bmp); 

      capture.visible = false; 
      saveButton.visible = true; 
      discardButton.visible = true; 
     } 

     private function saveImage(e:MouseEvent):void 
     { 
      byteArray = jpg.encode(bmd); 
      id=ExternalInterface.call("getID()"); 

      fileReference.save(byteArray, id+".jpg"); 

      removeChild(bmp); 
      saveButton.visible = false; 
      discardButton.visible = false; 
      capture.visible = true; 
     } 

     private function discard(e:MouseEvent):void 
     { 
      removeChild(bmp); 
      saveButton.visible = false; 
      discardButton.visible = false; 
      capture.visible = true; 
     } 
    } 
} 

Однако, когда функция вызывается, то кажется, что это возвращает меня-всегда ,,,,, старался понять этот вопрос, но я предполагаю, что я не в состоянии понять это out.I пытался предупредить значение, возвращаемое функцией javascript, правильно,

function getID() { 

    var idno = $('#ctl00_ContentPlaceHolder1_memberidcam').val(); 
    alert(idno); 
    return idno; 

} 

Пожалуйста, помогите мне. Thanks

ответ

2

Проверьте свой код AllowScriptAccess из кода для встраивания. Это влияет разрешено ли SWF взаимодействовать с JS через ExternalInterface:

http://helpx.adobe.com/flash/kb/control-access-scripts-host-web.html

Кроме того, лучшие практики было бы проверить, если ExternalInterface доступен:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#available

+0

,,, я пробовал, но до сих пор я не могу понять это ,,,, плохо stuggling с этим .... Спасибо за ваш интерес – freebird

+0

Наконец после часа борьбы ,, я получил его работу ,,, вопрос здесь был я вызывал метод javascript таким образом id = ExternalInterface.call ("getID()"); Я не знаю, почему, но это был вопрос, я изменил его на следующие и работал для меня id = ExternalInterface.call ("getID"); – freebird

2

Это может быть проблемой с типом, который вы возвращаете из своего JavaScript. Метод val(), вероятно, просто возвращает строку.

Так попробуйте изменить JavaScript, чтобы преобразовать значение в целое число:

function getID() { 
    var idno = $('#ctl00_ContentPlaceHolder1_memberidcam').val(); 
    return parseInt(idno); 
} 
+0

спасибо, что я пробовал это, но проблема все еще сохраняется – freebird

+0

, вы также можете просмотреть этот вопрос http://stackoverflow.com/questions/701200/externalinterface-call-not-getting-return-value –