【问题标题】:Action Script ExternalInterface.call() Issue动作脚本 ExternalInterface.call() 问题
【发布时间】:2012-03-20 10:24:16
【问题描述】:

我正在使用以下 AS 代码调用一个 javascript 函数,该函数将返回我所需的值。

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 ,,,,, 努力理解这个问题,但我想我无法弄清楚。我试图提醒返回的值通过javascript函数,就可以了,

function getID() {

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

}

请有人帮助我。 谢谢

【问题讨论】:

    标签: flash actionscript


    【解决方案1】:

    检查嵌入代码中的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

    【讨论】:

    • ,,, 我试过了,但还是搞不明白,,,, 很纠结这个....谢谢你的关注
    • 终于经过数小时的努力,我得到了它的工作,,这里的问题是我以这种方式调用javascript方法 id=ExternalInterface.call("getID()");我不知道为什么,但这就是问题所在,我将其更改为关注,它对我有用 id=ExternalInterface.call("getID");
    【解决方案2】:

    这可能是您从 JavaScript 返回的类型的问题。 val() 方法可能只是返回一个字符串。

    所以尝试更改您的 JavaScript 以将值转换为整数:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多