Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.10.2006, 15:02
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 1  
Ответить с цитированием
AlexSol

Регистрация: 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));
}
кактинку 300*300 обрабатывает около 3 сек, при этом подвисает и выдает результат trace('i'+i+'::'+(getTimer()-t1)) после того как считывание закончено. Хочется разбить этот процесс на части, чтобы пользователю выводился процент считанной инфы, пока программа думает.

Старый 23.10.2006, 15:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Ну, а где вопрос?

Старый 23.10.2006, 15:57
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 3  
Ответить с цитированием
AlexSol

Регистрация: Dec 2005
Сообщений: 316
считывание подвешивает флешку. как выводить промежуточный результат считывания? в функцию lineInfo(num) передается номер обрабатываемой строки. как его выводить? trace внутри фунции выдается тока после окончания считывания всей картинки.

Старый 23.10.2006, 16:19
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Трейс выводится вовремя, просто попадает он в аутпут после просчёта всего. Просто так получается.
Нужно цикл по высоте заменить интервалом.

Старый 23.10.2006, 16:29
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 5  
Ответить с цитированием
AlexSol

Регистрация: Dec 2005
Сообщений: 316
>Просто так получается

не так просто... если выводить в текстовое поле - то три секунды тишины а потом номер последней строки.

>Нужно цикл по высоте заменить интервалом
былв такая идея. а вот как этот интервал подобрать? чтобы он примерно соответствовал времени разбора строки?

Старый 23.10.2006, 16:50
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
не надо подбирать, поставь 0

Старый 23.10.2006, 17:07
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Да, а оно уж само по времени распределится.

Старый 23.10.2006, 20:56
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 8  
Ответить с цитированием
AlexSol

Регистрация: 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));
}

Старый 23.10.2006, 21:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Ну или одно или другое.
Зато ты можешь отобразить процесс.

Старый 23.10.2006, 22:14
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 10  
Ответить с цитированием
AlexSol

Регистрация: Dec 2005
Сообщений: 316
да, могу. с интервалом меня устраивает. просто ситуация интересная.

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:29.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.