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

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

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

Регистрация: Mar 2007
Адрес: Таиланд
Сообщений: 121
Отправить сообщение для grunerasta с помощью ICQ
По умолчанию APE - привязать constraint не к центру

Имеется частица, к которой привязана конструкция из констрейнтов (типа гибкой цепочки), нужно привязать эту цепочку не к центру частицы, а к некой другой точке, отстоящей каким-то образом в стороне от центра. Внизу эта цепочка, извиняюсь если чо за грязный код, первый и последний констрейнт привязаны к двум шарам, которые передаются в конструктор как g1 и g2.

Ну и еще раз задача: сделать так, чтобы эти крайние констрейнты привязывались не к центру шаров, а например к краю, к какой-то другой точке в общем.

Спасибо.

Код:
package {
	
	import flash.events.MouseEvent;
	
	import org.cove.ape.*;
	
	public class Sharf extends Group {
		
		public var bridgeParticles:Array;
		private var bridgeConns:Array;
		
		private var downHandler:Function;
		private var upHandler:Function;
		
		public function Sharf(colB:uint, colC:uint, colD:uint, g1:Group, g2:Group,downHandlerF:Function=null,upHandlerF:Function=null) {	
			
			downHandler=downHandlerF;
			upHandler=upHandlerF;
			
			colC=colB;
			
			var globalFriction:Number=0.5;
			
			var bx:Number = g1.particles[0].px;
			var by:Number = g1.particles[0].py;
			var bsize:Number = 6;
			var yslope:Number = 0;
			var particleSize:Number = 1;
			
			bridgeParticles=new Array();
			bridgeConns=new Array();
			
			var segments:Number=8;
			var stifness:Number=1;
			var constraintCollidable:Boolean=true;

			var particle1:CircleParticle;
			var particle2:CircleParticle;
			for(var i:Number=0;i<segments;i++)
			{
				bridgeParticles[i] = new CircleParticle(bx,by,particleSize);
				bridgeParticles[i].setStyle(1, 0xFF0000, 1, colB);
				bridgeParticles[i].friction=globalFriction;
				bridgeParticles[i].mass=0.1;
				bridgeParticles[i].sprite.buttonMode=true;
				
				bx += bsize;
				by += yslope;
				
				bridgeParticles[i].sprite.addEventListener(MouseEvent.MOUSE_DOWN,downHandler);
				addParticle(bridgeParticles[i]);
				if(i==0)
				{
					particle1=g1.particles[0];
					particle2=bridgeParticles[i];					
				}else{
					particle1=bridgeParticles[i-1]
					particle2=bridgeParticles[i];					
				}
				bridgeConns[i] = new SpringConstraint(particle1, particle2, 
					stifness, constraintCollidable, particleSize*2, 1,true);
				bridgeConns[i].setStyle(1, colC, 0, colB);
				SpringConstraint(bridgeConns[i]).fixedEndLimit=1;
				addConstraint(bridgeConns[i]);
				bridgeConns[i].sprite.buttonMode=true;
				bridgeConns[i].sprite.addEventListener(MouseEvent.MOUSE_DOWN,downHandler);
			}
			bridgeConns[segments] = new SpringConstraint(bridgeParticles[segments-1], g2.particles[0], 
				stifness, constraintCollidable, particleSize*2, 1,true);
			bridgeConns[segments].setStyle(1, colC, 0, colB);
			addConstraint(bridgeConns[segments]);
			bridgeConns[segments].sprite.buttonMode=true;
			bridgeConns[segments].sprite.addEventListener(MouseEvent.MOUSE_DOWN,downHandler);

			var bridgeConn:SpringConstraint = new SpringConstraint(g1.particles[0], g2.particles[0], 
					0.005, false, 1, 1,true);
			bridgeConn.setStyle(1, 0xFFFF00, 0, 0xFF0000);
			//addConstraint(bridgeConn);
		}
		
		public function startListeners():void
		{
			for each (var part:CircleParticle in bridgeParticles)
			{
				part.sprite.addEventListener(MouseEvent.MOUSE_DOWN,downHandler);
			};
			for each (var constr:SpringConstraint in bridgeConns)
			{
				constr.sprite.addEventListener(MouseEvent.MOUSE_DOWN,downHandler);
			};
		}

		public function stopListeners():void
		{
			for each (var part:CircleParticle in bridgeParticles)
			{
				part.sprite.removeEventListener(MouseEvent.MOUSE_DOWN,downHandler);
			};
			for each (var constr:SpringConstraint in bridgeConns)
			{
				constr.sprite.removeEventListener(MouseEvent.MOUSE_DOWN,downHandler);
			};
		}
	}
}

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

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

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


 


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


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