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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.04.2010, 20:49
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 21  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Да. Хотелось бы тоже узнать как лучше и правильнее делать подобные вещи.

Старый 19.04.2010, 00:20
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 22  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Эх никто подсказывать нам не хочет)))

Добавлено через 33 секунды
Вон парень советует модель волгоградца поглядеть. Ты не смотрел? Может там ответ. я просто АС3 плохо читаю еще

Старый 20.04.2010, 00:52
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 23  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Ага, посмотрел Волгоградца. Конечно !!! Здорово! Эх, надо было мне хорошо учится в школе... (

Старый 20.04.2010, 01:07
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 24  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
)))) отлично))) тоесть не помогло?

Старый 20.04.2010, 01:14
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 25  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Может я конечно вообще не прав, но мысли есть такие. Что если мы знаем примерно какую область занимает один квадрат.(Знаем ведь? - знаем)
Мы знаем координаты мыши. -> Мы можем знать какие квадраты в относительной близости к мыше. Значит нам нужно при создании бекгрануда из квадратов писать это дело в удобно читабельный массив(двухмерный массив т.е. где есть строка и столбец) и при создании каждого квадрата писать ему в доп свойства дефолтные значения x,y. Ну и что-то делать при onMouseMove. По идее сам принцип наверное должен быть такой. Могу попробовать чего собрать, но это наверное уже завтра.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 20.04.2010, 02:00
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 26  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Поробуй , но по прочтению все равно, ты идешь по пути где сцена 1600* и выше умрет от таких клипов. А нужно чтобы незаметно они висели и никого не трогали. Ведь это бекграунд и все. просто красивый)))

Старый 20.04.2010, 03:26
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 27  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от AzagThoth Посмотреть сообщение
Может я конечно вообще не прав, но мысли есть такие. Что если мы знаем примерно какую область занимает один квадрат.(Знаем ведь? - знаем)
Мы знаем координаты мыши. -> Мы можем знать какие квадраты в относительной близости к мыше. Значит нам нужно при создании бекгрануда из квадратов писать это дело в удобно читабельный массив(двухмерный массив т.е. где есть строка и столбец) и при создании каждого квадрата писать ему в доп свойства дефолтные значения x,y. Ну и что-то делать при onMouseMove. По идее сам принцип наверное должен быть такой. Могу попробовать чего собрать, но это наверное уже завтра.
Дело в том, что как раз так я и сделал, там выше где то код. Проблема в твинах, они тормозят (

Старый 20.04.2010, 04:19
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 28  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
В общем я набросал нечто. Конечно получилось гадко и неоптимально ни разу ну уж лучше так чем никак. Не сомневаюсь что можно довести до ума если немного попыхтеть. В общем прошу любить и жаловать
Код AS1/AS2:
var st:Number=40;//=ширина=высота атачимого мувиклипа
var prilip:Number=1;//сколько мувиклипов должны прилипать
 
i=Math.floor(Stage.width/st);
j=Math.floor(Stage.height/st);
 
var arr:Array=[];
var znak1:Number=null;
var znak=0;
 
for(var y=0; y<i; y++){
	arr[y]=[];
	if(znak==0){
		znak=1;
	} else if(znak==1){
		znak=0;
	}
	znak1=znak;
	for(var z=0; z<j; z++){
		if(znak==0){
			znak=1;
		} else if(znak==1){
			znak=0;
		}
		if(znak==1){
			arr[y][z]=attachMovie("kub","kub"+y+z,getNextHighestDepth(),{_x:y*st, _y:z*st});
			arr[y][z].defaultX=arr[y][z]._x;
			arr[y][z].defaultY=arr[y][z]._y;
			arr[y][z].defaultMesto=true;
		}
	}
	znak=znak1;
}
 
 
onMouseMove=function():Void{
	i=Math.round(_xmouse/st);
	j=Math.round(_ymouse/st);
	for(var y=i-prilip;y<i+prilip;y++){
		for(var z=j-prilip;z<j+prilip;z++){
			if(arr[y][z]!=undefined){
				arr[y][z]._x=_xmouse;
				arr[y][z]._y=_ymouse;
				arr[y][z].defaultMesto=false;
			}
		}
	}
	defaultMove();
}
 
 
function defaultMove():Void{
	for(var i=0; i<arr.length; i++){
		for(var j=0; j<arr[i].length; j++){
			if(arr[i][j].defaultMesto==false){
				if(arr[i][j].defaultX>arr[i][j]._x){
					arr[i][j]._x++;
				} else if(arr[i][j].defaultX<arr[i][j]._x){
					arr[i][j]._x--;
				}
				if(arr[i][j].defaultY>arr[i][j]._y){
					arr[i][j]._y++;
				} else if(arr[i][j].defaultY<arr[i][j]._y){
					arr[i][j]._y--;
				}
				rX=Math.abs(arr[i][j].defaultX-arr[i][j]._x);
				rY=Math.abs(arr[i][j].defaultY-arr[i][j]._y);
				if(rX+rY<st/4){
					arr[i][j]._x=arr[i][j].defaultX;
					arr[i][j]._y=arr[i][j].defaultY;
					arr[i][j].defaultMesto=true;
				}
			}
		}
	}
}
Лично у меня сие уродство не тормозит ни разу. Время на писанину примерно минут 20 ушло.
Конечно не совсем по ТЗ, но идея вроде близка. Ну хотя бы отчасти

Добавлено через 6 часов 30 минут
Собственно способ ещё убыстрить работу этой ерунды это играться не со свойством defaultMesto которое я зачем то придумал, а писать например все сдвиженые мувиклипы в отдельный массив, и функцией defaultMove() возвращать обратно мувиклипы которые в этом массиве и сам массив планомерно чистить. Если не устраивает запуска функции при движении то можно запускать её с n-м интервалом. Вроде всё правильно. Ну а дальше только привести во вменямый вид сам код По крайней мере я ощущаю что его можно сократить раза в два-три наверное без ущерба функциональности.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.


Последний раз редактировалось AzagThoth; 20.04.2010 в 13:39.
Старый 20.04.2010, 12:23
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 29  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
AzagThoth, к сожалению ваш вариант у меня тормозит, но это конечно мой комп старый уже.
И ещё один вариант. Сделал без твинов, а анимация кубика сделана в ручную, пару вариантов который выбирается рандомно.
Код AS1/AS2:
var scale = 20;//расстояние между клетками
for (var i = 0; i < 25; i++) {
	for (var j = 0; j < 50; j++) {
		var c = _root.attachMovie("clip", i + "_" + j, _root.getNextHighestDepth());
		c._x = 10 + j * scale;
		c._y = 10 + i * scale;
	}
}
fps.swapDepths(_root.getNextHighestDepth());
_root.onMouseMove = function() {
 
 
	var mJ = Math.floor(_xmouse / scale);
	var mI = Math.floor(_ymouse / scale);
 
	for (var tempI = mI - 1; tempI <= mI + 1; tempI++) {
		for (var tempJ = mJ - 1; tempJ <= mJ + 1; tempJ++) {
			var tc:String = tempI + "_" + tempJ;
 
			var rand = [1, 31, 61, 91];
			var randCheck = rand[random(rand.length - 1)];
			if (_root[tc]._currentframe == 1) {
				_root[tc]._rotation = 90 * random(5);
				_root[tc].gotoAndPlay(randCheck);
			}
		}
	}
	updateAfterEvent();
 
};
Вложения
Тип файла: swf test2.swf (4.1 Кб, 57 просмотров)


Последний раз редактировалось samana; 20.04.2010 в 12:26.
Старый 20.04.2010, 13:23
AzagThoth вне форума Посмотреть профиль Отправить личное сообщение для AzagThoth Найти все сообщения от AzagThoth
  № 30  
Ответить с цитированием
AzagThoth
 
Аватар для AzagThoth

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Не знаю, может быть просто потому у Вас тормозит, что оно не оптимизировано. В общем я тогда постараюсь как-то поулучшать этот вариант и выложу что-то более вменяемое. Но идея у меня пока всё равно та же. Программно рисовать движения и рулить массивами.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

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

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

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


 


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


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