Моя первая мысль из вашего описания того, что происходит, - это «точка останова».Единственный раз, когда мой телефон выдает мне это сообщение, это когда я отлаживаюсь и он слишком долго останавливается на точке останова.
Вы можете преобразовать ваши event.data в MediaPromise
private function onComplete(event:MediaEvent):void {
var mediaPromise:MediaPromise = event.data as MediaPromise;
image.source = mediaPromise.file.url;
pictureTaken = true;
}
Хотя это может быть просто ошибкой копирования.
Насколько я могу судить, вам не нужно base64 кодировать данные изображения.Он уже закодирован и готов к вставке в базу данных.Возможно, двойное кодирование как-то создает проблему.???
Я бы изменил
if(pictureTaken)
{
var jencoder:JPEGEncoder = new JPEGEncoder(75);
var imageByteArray:ByteArray = jencoder.encode(image.bitmapData);
var baseEncoder:Base64Encoder = new Base64Encoder();
baseEncoder.encodeBytes(imageByteArray);
encodedBytes = baseEncoder.toString();
}
else
{
var jencoder:JPEGEncoder = new JPEGEncoder(75);
var imageByteArray:ByteArray = jencoder.encode(image2.bitmapData);
var baseEncoder:Base64Encoder = new Base64Encoder();
baseEncoder.encodeBytes(imageByteArray);
encodedBytes = baseEncoder.toString();
}
insertStmt.parameters[":RecipeID"] = ID as int;
insertStmt.parameters[":Name"] = NameArea.text;
insertStmt.parameters[":Category"] = TypeArea.text;
insertStmt.parameters[":Origin"] = OriginArea.text;
insertStmt.parameters[":Recipe"] = RecipeArea.text;
insertStmt.parameters[":Favorite"] = 0 as int;
insertStmt.parameters[":Image"] = encodedBytes;
insertStmt.execute();
на
var jencoder:JPEGEncoder = new JPEGEncoder(75);
var imageByteArray:ByteArray;
if(pictureTaken)
{
imageByteArray = jencoder.encode(image.bitmapData);
}
else
{
imageByteArray = jencoder.encode(image2.bitmapData);
}
insertStmt.parameters[":RecipeID"] = ID as int;
insertStmt.parameters[":Name"] = NameArea.text;
insertStmt.parameters[":Category"] = TypeArea.text;
insertStmt.parameters[":Origin"] = OriginArea.text;
insertStmt.parameters[":Recipe"] = RecipeArea.text;
insertStmt.parameters[":Favorite"] = 0 as int;
insertStmt.parameters[":Image"] = imageByteArray;
insertStmt.execute();
Если по какой-то причине вам все еще нужна кодировка base64, и она не создает проблемы, я быТем не менее, мы советуем рефакторинг кода, подобного этому, чтобы сохранить дублирование, поскольку единственное, что различается между этими двумя значениями, если ветви являются источником растровых данных.
var jencoder:JPEGEncoder = new JPEGEncoder(75);
var imageByteArray:ByteArray;
if(pictureTaken)
{
imageByteArray = jencoder.encode(image.bitmapData);
}
else
{
imageByteArray = jencoder.encode(image2.bitmapData);
}
var baseEncoder:Base64Encoder = new Base64Encoder();
baseEncoder.encodeBytes(imageByteArray);
encodedBytes = baseEncoder.toString();
Однако это всего лишь первый удар по нему.Было бы полезно увидеть код все вместе.Я предполагаю, что encodedBytes - это строка, доступная всему классу?Я не могу видеть, как / когда вызывается AddHandler, поэтому я также не могу сказать состояния переменных, когда он вызывается (что может быть связано с проблемой).Также было бы полезно узнать, что происходит после завершения AddHandler.Возможно, это ошибка, возникающая после зависания оператора вставки?
Вы отладили его и получили какие-либо ошибки, чтобы поделиться?
Я знаю, что посту уже месяц, так что, возможно, вы ужедогадаться.Может быть, вы могли бы поделиться этим, чтобы другие не сделали ту же ошибку.В любом случае, я надеюсь, что это может кому-то помочь.