|
|
|||||
Регистрация: Dec 2005
Сообщений: 316
|
пошаговое считывание из BitmapData
делаю рисовалку, где необходимо передать результат на сервер. считываю данные с BitmapData и заношу массив.
arr_btn.onRelease = function() { t = getTimer(); var lastColor; for (i=0; i<Math.round(clip._height); i++) { var leng:Number = 0; arrayCss[i] = new Array(); var index:Number = 0; t1 = getTimer(); lineInfo(i); } makeAutData(arrayCss); trace('-----------------'); trace(getTimer()-t); }; function lineInfo(i) { for (j=0; j<=Math.round(clip._width); j++) { if (j == 0) { lastColor = bitmap.getPixel(j+1, i+1).toString(16); } var color = bitmap.getPixel(j+1, i+1).toString(16); //если тот же цвет if (color == lastColor) { //если клетка не последняя if (j != Math.round(clip._width)) { leng++; } else { //если последняя: записываем arrayCss[i][index] = [leng, lastColor]; } } else { //цвет другой arrayCss[i][index] = [leng, lastColor]; leng = 1; index++; lastColor = color; } } trace('i'+i+'::'+(getTimer()-t1)); } |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Ну, а где вопрос?
|
|
|||||
Регистрация: Dec 2005
Сообщений: 316
|
считывание подвешивает флешку. как выводить промежуточный результат считывания? в функцию lineInfo(num) передается номер обрабатываемой строки. как его выводить? trace внутри фунции выдается тока после окончания считывания всей картинки.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Трейс выводится вовремя, просто попадает он в аутпут после просчёта всего. Просто так получается.
Нужно цикл по высоте заменить интервалом. |
|
|||||
Регистрация: Dec 2005
Сообщений: 316
|
>Просто так получается
не так просто... если выводить в текстовое поле - то три секунды тишины а потом номер последней строки. >Нужно цикл по высоте заменить интервалом былв такая идея. а вот как этот интервал подобрать? чтобы он примерно соответствовал времени разбора строки? |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Да, а оно уж само по времени распределится.
|
|
|||||
Регистрация: Dec 2005
Сообщений: 316
|
перевел на интервал, работает. Процент выполненнного считывания выдается, а вот время считывания увеличилось в два раза, при этом скорость считывания строки таже. Можно ли это исправить? код вышел такой:
var intervalId:Number; var count:Number = 0; var clipH:Number; var duration:Number = 0; function executeCallback():Void { var leng:Number = 0; arrayCss[count] = new Array(); var index:Number = 0; t1 = getTimer(); lineInfo(count); if (count>=clipH) { clearInterval(intervalId); makeAutData(arrayCss); trace('-----------------'); trace(getTimer()-t); } count++; } arr_btn.onRelease = function() { t = getTimer(); var lastColor; clipH = Math.round(clip._height); intervalId = setInterval(executeCallback, duration); }; function lineInfo(i) { for (j=0; j<=Math.round(clip._width); j++) { if (j == 0) { lastColor = bitmap.getPixel(j+1, i+1).toString(16); } var color = bitmap.getPixel(j+1, i+1).toString(16); //если тот же цвет if (color == lastColor) { //усли клетка не последняя if (j != Math.round(clip._width)) { leng++; } else { //если последняя: записываем arrayCss[i][index] = [leng, lastColor]; } } else { //цвет другой arrayCss[i][index] = [leng, lastColor]; leng = 1; index++; lastColor = color; } } tt.text = ''+Math.round(i*100/(clip._height)); trace('i'+i+'::'+(getTimer()-t1)); } |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Ну или одно или другое.
Зато ты можешь отобразить процесс. |
|
|||||
Регистрация: Dec 2005
Сообщений: 316
|
да, могу. с интервалом меня устраивает. просто ситуация интересная.
|
Часовой пояс GMT +4, время: 11:29. |
|
« Предыдущая тема | Следующая тема » |
|
|