![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
делаю рисовалку, где необходимо передать результат на сервер. считываю данные с 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,787
|
Ну, а где вопрос?
![]() |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
считывание подвешивает флешку. как выводить промежуточный результат считывания? в функцию lineInfo(num) передается номер обрабатываемой строки. как его выводить? trace внутри фунции выдается тока после окончания считывания всей картинки.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Трейс выводится вовремя, просто попадает он в аутпут после просчёта всего. Просто так получается.
Нужно цикл по высоте заменить интервалом. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
>Просто так получается
не так просто... если выводить в текстовое поле - то три секунды тишины а потом номер последней строки. >Нужно цикл по высоте заменить интервалом былв такая идея. а вот как этот интервал подобрать? чтобы он примерно соответствовал времени разбора строки? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да, а оно уж само по времени распределится.
|
|
|||||
|
Регистрация: 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,787
|
Ну или одно или другое.
Зато ты можешь отобразить процесс. |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 316
|
да, могу. с интервалом меня устраивает. просто ситуация интересная.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|