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

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

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

Регистрация: Feb 2009
Сообщений: 180
По умолчанию Программная линия не отображается поверх нижележащих слоев

Здравствуйте. Не могу понять в чем проблема. АС протягивающий линию находится аж на 9-ом слое в сцене. Все слои оказавшиеся ниже перекрывают ее. В том числе и фон.
Линия в данном случае имитирует поведение веревки. Код для веревки брал в найденном исходнике.
Код AS1/AS2:
numPoints = 20;
minDist = 50;
init();
function init()
{
	var dx = h2._x - rocket2._x;
	var dy = h2._y - rocket2._y;
	points = new Array();
	for(var i=0;i<numPoints;i++)
	{
		points[i] = {x:rocket2._x + dx / numPoints * i, y:rocket2._y + dy / numPoints * i, vx:0, vy:0};
	}
	onEnterFrame = draw;
}
 
function draw()
{
	for(var i=0;i<numPoints;i++)
	{
		points[i].x += points[i].vx;
		points[i].y += points[i].vy;
		/*
		points[i].vx += Math.random() - .5;
		points[i].vy += Math.random() - .5;
		*/
		if(i == 0)
		{
			var x1 = rocket2._x;
			var y1 = rocket2._y;
		}
		else
		{
			var x1 = points[i-1].x;
			var y1 = points[i-1].y;
		}
		if(i < numPoints-1)
		{
			var x2 = points[i+1].x;
			var y2 = points[i+1].y;
		}
		else
		{
			var x2 = h2._x;
			var y2 = h2._y;
		}
//		trace([x1, y1, x2, y2]);
		points[i].vx += (x1 - points[i].x) * .05;
		points[i].vy += (y1 - points[i].y) * .05;
		points[i].vx += (x2 - points[i].x) * .05;
		points[i].vy += (y2 - points[i].y) * .05;
		points[i].vy += .05;
 
		points[i].vx *= .93;
		points[i].vy *= .93;
	}
	clear();
	lineStyle(4,0x0000FF);
	moveTo(rocket2._x, rocket2._y);
	for(var i=0;i<numPoints-1;i++)
	{
		var x = (points[i].x + points[i+1].x) / 2;
		var y = (points[i].y + points[i+1].y) / 2;
		curveTo(points[i].x, points[i].y, x, y);
	}
	curveTo(points[i].x, points[i].y, h2._x, h2._y);
}
h2 и rocket2 - инстанс неймы объектов между которыми "натягивается" линия(веревка).
Заранее спасибо за помощь.

Старый 05.08.2009, 02:28
alekslitvinenk вне форума Посмотреть профиль Отправить личное сообщение для alekslitvinenk Посетить домашнюю страницу alekslitvinenk Найти все сообщения от alekslitvinenk
  № 2  
Ответить с цитированием
alekslitvinenk
 
Аватар для alekslitvinenk

Регистрация: Oct 2005
Адрес: Москва
Сообщений: 491
Отправить сообщение для alekslitvinenk с помощью ICQ Отправить сообщение для alekslitvinenk с помощью AIM Отправить сообщение для alekslitvinenk с помощью Skype™
В этом коде не создаются новые мувики и нигде нет вызовов swapDepths();
причина где-то в ином месте...
или попробуйте
в функцию init() добавить:
Код AS1/AS2:
 
this.swapDepths(_parent.getNextHighestDepth());

Старый 05.08.2009, 02:54
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 3  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
Добавил, ничего не изменилось..

Старый 05.08.2009, 10:05
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код написан в руте я так понимаю, какой тут своп и какой парент? Создавайте пустой клип для графики.
__________________
Reality.getBounds(this);

Старый 05.08.2009, 10:39
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 5  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
Создал символ. Написал внутри на кадре код. Перед инстансами добавил "_root."
В итоге линия рисуется поверх всего, но координаты не пойми как вычисляются из внутреннего символа. Линия строится вообще не пойми как, не соединяя то, что должна.

Добавлено через 1 минуту
Добавить соединяемые мувики внутрь этого символа нет возможности.

Старый 05.08.2009, 11:03
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вам рисовать нужно внутри нового созданного вами символа, поэтому не надо было добавлять _root перед именами мувиков.
А для перевода координат между _root и внутренними координатами мувика используйте globalToLocal и localToGlobal.
И еще, общие замечания.
1) От того где находится код никак не зависит, на какой глубине будут выполняться операции по созданию новых объетов, определенные в AS.
2) В готовом ролике нет слоев. Там есть только глубины, Z-координата, и области перекрытия определяются, исходя из глубины. Глубина и слой в FLA-проекте - совершенно разные вещи. Наличие того или иного символа на определенном слое, если нет исполняемого кода, работающего с глубинами, дает только начальные взаимные расположения положения объектов в готовом ролике по z-координате. Причем для мувиков, созданных руками, глубины лежат на -16 000-х глубинах, гарантируя таким образом объектам, созданным с AS, свободные глубины от 0 и выше.
Главное для вас - рисовать в мувике, расположенном в слое, который находится поверх тех слоев, где находятся объекты, которые нужно перекрыть.

Вот в этом примере создается программно мувик bg на глубине 0 и в нем рисуется прямоугольник.
Код AS1/AS2:
this.createEmptyMovieClip("bg", 0);
this.bg.moveTo(0,0);
this.bg.lineStyle(0,0x000000,0);
this.bg.beginFill(0xD1CCB3, 100);
this.bg.lineTo(100, 0);
this.bg.lineTo(100, 20);
this.bg.lineTo(0, 20);
this.bg.lineTo(0, 0);
this.bg.endFill();
Сделайте нечто подобное и не забудьте о переводе координат.


Последний раз редактировалось mooncar; 05.08.2009 в 12:20.
Старый 05.08.2009, 13:03
Acrossfy вне форума Посмотреть профиль Отправить личное сообщение для Acrossfy Найти все сообщения от Acrossfy
  № 7  
Ответить с цитированием
Acrossfy
 
Аватар для Acrossfy

Регистрация: Feb 2009
Сообщений: 180
mooncar, спасибо большое, последний пример очень помог. Я просто создал клип, и дописал у себя в координатах this.line. Координаты не переводил, т.к. не совсем разобрался через хелп в функциях localToGlobal и наоборот.

Старый 05.08.2009, 17:49
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
У пустого клипа, созданного в руте, в координатах 0,0 - зачем переводить координаты? Они такие же как в _root.
__________________
Reality.getBounds(this);

Старый 05.08.2009, 21:18
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 9  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Согласен, невнимательно отследил ситуацию.

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

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

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


 


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


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