Показать сообщение отдельно
Старый 28.11.2006, 19:55
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 27  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
Цитата:
Сообщение от MerlinTwi
Если я правильно понял задачу, то я бы сделал так:
Код:
...............
function onDraw(e:Event):void {
	var n:int = 200; // выводим 200 точек
	while (n-- && ar.length) {
		// берем следующую точку
		var pixel:Point = ar.pop();
		// рисуем ее
		trace("Draw:", pixel.x, pixel.y);
		resultBitmapData.setPixel(pixel.x, pixel.y, myBitmapData.getPixel(pixel.x, pixel.y));
	}
}
кхм тоже правильно, но не рационально... именно в этой части
Код:
	var n:int = 200; // выводим 200 точек
	while (n-- && ar.length) {
		// берем следующую точку
		var pixel:Point = ar.pop();
лишний поп, лишнее вычисление ar.length, ......

в идеале для скорости было красиво просто хранить начальный индекс в массиве и количество выводимых точек.

Код:
var currentPos : number = 0;
........
var countPoint : number  =  ((currentPos+200)> ar.length) ? 200 : ar.length-currentPos
var pixel:Point;
while (countPoint >0) {
 pixel = ar[countPoint + currentPos ];
trace("Draw:", pixel.x, pixel.y);
		resultBitmapData.setPixel(pixel.x, pixel.y, myBitmapData.getPixel(pixel.x, pixel.y));
countPoint--;
}
currentPos+=countPoint ;
if (currentPos>ar.length) trace ("the end");
)
ну а в самом конце просто бахать наш массив и все
__________________
33 коровы


Последний раз редактировалось __i; 28.11.2006 в 19:57.