0

最近、AIR 3.7 を Flex 4.9.1 SDK にオーバーレイしました。私が作成した iOS アプリは、3.4 (私が作成したもの) で完全に動作します。アプリの一部は、写真を撮るか、カメラ ロールから取得する (そして圧縮バージョンを保存する) ことですが、3.7 では、MediaEvent.Complete コードが呼び出されるとアプリがハングします (以下のコード)ローダーコンテキストを追加しますか?

protected function onComplete(event:MediaEvent):void {


            //Busy Indicator

            bi = new UploadAlert(); //upload Alert is a component I created to display a Busy indicator
            bi.x = this.width/2 - 150;
            bi.y = this.height/2 - 150;

            //Get number of elements
            allElements = this.numElements;



            this.addElementAt(bi, allElements);





            var cameraUI:CameraUI = event.target as CameraUI;


            var mediaPromise:MediaPromise = event.data;

            var mpLoader:Loader = new Loader();
            mpLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onMediaPromiseLoaded);

            mpLoader.loadFilePromise(mediaPromise);


        }

        private function onMediaPromiseLoaded(e:Event):void
        {
            var mpLoaderInfo:LoaderInfo = e.target as LoaderInfo;
            mpLoaderInfo.removeEventListener(Event.COMPLETE, onMediaPromiseLoaded);

            this.imageProblem.source = mpLoaderInfo.loader;






                var bitmapDataA:BitmapData = new BitmapData(mpLoaderInfo.width, mpLoaderInfo.height);
                bitmapDataA.draw(mpLoaderInfo.content,null,null,null,null,true);  



                var bitmapDataB:BitmapData = resizeimage(bitmapDataA, int(mpLoaderInfo.width / 4), int(mpLoaderInfo.height/ 4));  // function to shrink the image





                var c:CameraRoll = new CameraRoll();
                c.addBitmapData(bitmapDataB);

                var now:Date = new Date();
                var f:File = File.applicationStorageDirectory.resolvePath("IMG" + now.seconds + now.minutes + ".jpg");                                    
                var stream:FileStream = new FileStream()
                stream.open(f, FileMode.WRITE);                                         

                // Then had to redraw and encode as a jpeg before writing the file


                var bytes:ByteArray = new ByteArray();
                bytes = bitmapDataB.encode(new Rectangle(0,0, int(mpLoaderInfo.width / 4) , int(mpLoaderInfo.height / 4)), new JPEGEncoderOptions(80), bytes);




                stream.writeBytes(bytes,0,bytes.bytesAvailable);
                stream.close(); 




            imagefile = f;
            deleteFlag = 1;

            this.removeElementAt(allElements);

            this.btnRotate.enabled = true;
            this.btnDelete.enabled = true;
        }
4

1 に答える 1

2

わかりましたので、問題は私のコードにはありませんでした。実際、AIR 3.7 をオーバーレイしたときもそうでした。air-config.xml、flex-config.xml、および airmobile-config.xml のファイルは、ターゲットとしている Flash Player のバージョンが低すぎます。11.1 で swf バージョン 14 でした。

それぞれ 11.5 と 18 である必要があります。これらのファイルを変更すると、完全に機能しました。

于 2013-05-07T01:10:30.527 に答える