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

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

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

Регистрация: Jul 2012
Сообщений: 66
По умолчанию видимость объектов сцены классами

добрый день, очень надеюсь на вашу помощь.

Ситуация следующая: есть два класса Unit и Floor. каждый объект класса Floor добавляется конструтктором в статический массив этого класса.

Объект класса Unit каждый кадр обращается к функции класса Floor, которая пебирает все экзэмпляры Floor и проверяет пересекаются ли они одним из своих подобъектов(вложенные мувики) с объектом вызвавшим функцию(экземпляром Unit-а). все работало превосходно, но затем мне понадобилось добавить все объекты со сцены(экземпляры Unit и Floor) в отдельный муви клип.(map_mc предположим). после чего появилось обилие проблем с координатами( хотя поидеи я предусмотрел смещение сетки координат) и более того методы hitTestObject и hitTestPoint перестали работать.


приведу сокращенный код, думаю его хватит. если понадобится кину исхожник.

класс Unit
Код AS3:
package script_files
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.ui.Mouse;
	import flash.events.MouseEvent;
	import flash.display.Stage;
 
	public class Unit extends MovieClip 
	{
 
 
//CONSTRUTOR		
		public function Unit()
		{
 
			addEventListener(Event.ENTER_FRAME, Behavior);
 
				// constructor code
		}
 
 
//BEHAVIOR main function, enter frame
		private function Behavior(e:Event):void
		{	
			this.x += speed_x;
			this.y += speed_y;
 
			Floor.collision(this);
		}
}
}
класс Floor
Код AS3:
package script_files {
	import flash.display.MovieClip;
 
	public class Floor extends MovieClip
	{
 
 
		private static var FloorArr:Array = new Array();//статический массив флор
		public function Floor() 
		{
			Floor.FloorArr.push(this);//добавляем в массив каждый экземпляр
			// constructor code
		}
		public static function collision(object:MovieClip)
		{
 
			for(var i=0;i< FloorArr.length; i++)//перебираем все экземпляры
			{
				//перебираем все подобъекты [i]-экземпляра
				if( FloorArr[i].collider_up.hitTestPoint(object.x,object.y) && object.speed_y > 0)
				{	
 
					//действия
 
 
				}
				if( FloorArr[i].collider_down.hitTestPoint(object.x,object.y - object.height) && object.speed_y < 0)
				{
 
 
									}
				if( FloorArr[i].collider_left.hitTestObject(object) && object.speed_x > 0)
				{
 
				}
				if( FloorArr[i].collider_right.hitTestObject(object) && object.speed_x < 0)
				{
 
				}
			}
 
 
 
		}
 
	}
 
}

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

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

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


 


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


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