2012-03-20 3 views
0

次のASコードを使用して、必要な値を返すjavascript関数を呼び出しています。関数が呼び出されたときにアクションスクリプト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; 
     } 
    } 
} 

はしかし、問題を理解するために懸命に試みた,,,,,いつも私に0を返しているようだが、私は私がしようとしたことをout.I理解することはできませんよと思いますjavacript関数によって返された値を警告する、それは適切です、

function getID() { 

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

} 

誰か助けてください。 ありがとう

答えて

2

埋め込みコードからAllowScriptAccessパラメータを確認してください。これは、SWFがExternalInterfaceを通じてJSと対話することが許可されているかどうかに影響:

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 –

関連する問題