Показать сообщение отдельно
Старый 29.06.2009, 22:22
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 15  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Psycho Tiger и уважаемая публика...
Предлагаю 2 варианта кода, по сути делающих одно и то же: вывод мувика из библиотеки на основную сцену. В библиотеке мувик (просто квадрат) с Linkage "quad".
Код с применением цикла:
Код AS1/AS2:
Stage.align = "TL";
Stage.scaleMode = "noscale";
for (v=0; v<100; v++) {
	for (h=0; h<100; h++) {
		this.attachMovie("quad","quad_v"+v+"h"+h,this.getNextHighestDepth());
		this["quad_v"+v+"h"+h]._x = this["quad_v"+v+"h"+h]._width*v;
		this["quad_v"+v+"h"+h]._y = this["quad_v"+v+"h"+h]._height*h;
	}
}
Действительно работает быстрее, но на какое-то время полностью вырубает машину (может только мою =) )
Код с применением рекурсии (и задержки для обхода лимита ее глубину)
Код AS1/AS2:
Stage.align = "TL";
Stage.scaleMode = "noscale";
foo(0,0,this);
function foo(v, h, targ) {
	targ.attachMovie("quad","quad_v"+v+"h"+h,targ.getNextHighestDepth());
	targ["quad_v"+v+"h"+h]._x = targ["quad_v"+v+"h"+h]._width*h;
	targ["quad_v"+v+"h"+h]._y = targ["quad_v"+v+"h"+h]._height*v;
	if (h<100) {
		foo(v,h+1,targ);
	} else {
		if (v<100) {
			setTimeout(foo,1,v+1,0,this);
		} else {
			trace("stop");
		}
	}
}
Работает все же медленней (даже если задержку поставить в 0мс). Но при этом машина не зависает на несколько секунд, а результат можно лицезреть (это можно отнести как к плюсам, так и к минусам).
Исходя из вышесказанного остановлюсь все же на рекурсии (т.к. не думаю что пользователь будет рад полному подвисанию системы, даже в ущерб скорости). Если у кого будут другие мнения и/или доводы - с удовольствием выслушаю.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!