Monacaを利用してiPhoneで画像を取り込むJavaScriptコードを書いています。
現在のところ以下のようなコードになっていまして、画像の取り込みに成功しております。
画像の取り込みが完了したら次の関数(nextStep())を1回実行させたいと思い、下記コード内の現在コメントアウトにしている部分に記述したのですが、この場合ですと画像を10枚取り込むと10回実行されてしまいます。
画像を10枚取り込む操作をしたとき、最後の10枚目の処理後にnextStep()を1回だけ実行させるようなコードにしたいのですが、どのようにコードを修正すると実現するでしょうか?
よろしくお願いいたします。
// 画像を取得する function getImage() { try{ window.imagePicker.getPictures( function(results) { var content = ''; for (var i = 0; i < results.length; i++) { camera_success(results[i]); // カメラ起動成功時camera_successを実行 } }, function (error) { alert('Error: ' + error); }, { title: '画像を選択', width: 1000, height: 1000, } ); } catch(e){ alert(e); } } // カメラ起動時 function camera_success(results) { window.resolveLocalFileSystemURL( results, resolve_success, file_error ); } function resolve_success(entry) { var fileExtension = entry.name; fileExtension = fileExtension.split('.'); fileExtension = fileExtension[fileExtension.length-1].toLowerCase(); var randomNumber = Math.floor( Math.random() * 99999 ); // 99999までのランダムな整数(乱数)を生成 randomNumber = ( '00000' + randomNumber ).slice( -5 ); var d = new Date(); var n = d.getTime(); var newFileName = 'image_' + n + '_' + randomNumber + '.' + fileExtension; var myFolderApp = 'myFolder'; window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function( fileSys ) { fileSys.root.getDirectory( myFolderApp, {create: true, exclusive: false}, function( directory ) { entry.copyTo( directory, newFileName, function move_success(entry) { var result = '<img src="' + myFolderApp + '/' + newFileName + '">'; // IMGタグを作成 $(result).prependTo('.preview'); // HTMLに挿入 // ★★★ ここに次に実行させる関数nextStep()を書くと、10枚取り込んだとき10回実行されてしまう ★★★ } , file_error ); }, file_error ); }, file_error ); } function file_error(error) { alert('File System Error:' + error.code); } function camera_error(message) { alert('Camera Error:' + message); }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/19 12:03