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

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

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

Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
Цитата:
Если объект не добавлен, то и координата должна быть не определена, то есть даже не равна нулю.
у предопределенных свойств существуют значения по умолчанию в случае с координатами это 0
Цитата:
Честно говоря не понял, о чем ты. Думаю это ничего не исправит.
в данном коде - не исправит.
а если переделать классы шар и шарзлой удалив в них определения одноименных с главным классом свойств или забирать в них ссылку на объект из свойств Main класса должно помочь.
Вообще может исходя из задачи будет проще сориентироваться?

Добавлено через 3 минуты
Цитата:
удивило, что оно не ругнулось насчёт override, что, если private,
насколько я знаю private доступен только внутри класса, потому override нету.

Старый 04.01.2011, 22:15
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 12  
Ответить с цитированием
DZHETIGAPA
[+3 18.04.11]

Регистрация: Dec 2010
Сообщений: 342
Добавил в класс Shar экземпляр класса SharZloi.НО... теперь поведение объекта класса SharZloi на сцене вообще не понятно. Хотя потом дошел, что теперь отсчет координат объекта класса SharZloi идет относительно объекта класса Shar, ведь мы именно в этот класс добавляем.А мне ведь надо координаты относительно сцены.

Значит, чтобы координаты для обоих объектов классов были одинаковы относительно сцены, то надо добавлять их только в класс Main. Верно я понял?

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Можно делать перерасчет относительно любого контейнера, смотрите в сторону globalToLocal и localToGlobal
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 05.01.2011, 02:38
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 14  
Ответить с цитированием
DZHETIGAPA
[+3 18.04.11]

Регистрация: Dec 2010
Сообщений: 342
Вот возникло еще одно непонимание. прошу помощи.

Добавил еще один маленький шарик SharSmall, который удаляется и заново добавляется на сцену в случае столкновения.

Вот код двух классов:

Код AS3:
package  
{
	import flash.display.*;
	import flash.events.*;
	import com.greensock.*;
 
	public class SharSmall extends XYRandom
	{
		private var rad:Number;
 
		public function SharSmall():void
		{
			this.addEventListener(Event.ADDED_TO_STAGE, added);
		}
 
		private function added(e:Event):void
		{
 
            TweenMax.to(this, 0.5, { x:this.x + 40, yoyo:true, repeat: -1 } );
			addEventListener(Event.ENTER_FRAME, onFrame);
			rad = this.width / 2;
 
		}
 
		private function onFrame(e:Event):void
		{
			if (this.x <= rad) this.x = rad;
			if (this.x >= stage.stageWidth -rad) this.x = stage.stageWidth -rad;
			trace("STAGE="+stage.stageWidth)
		}	
	}
}
SWF файл компилируется во Flash CS3, но при каждом столкновении пишет ошибку:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at SharSmall/:nFrame()
при этом продолжается работа, но при каждом столкновении прога тормозит все больше. Ошибка возникает именно при столкновении объектов. То есть если нет столкновения, то и нет ошибки.

Если вместо stage.stageWidth ставлю просто значение 550, то все работает без проблем.

Вот основной класс, где происходит обработка столкновения объектов.
Код AS3:
package  
{
	import flash.display.*;
	import flash.events.*;
	import com.greensock.*;
	import CircleCollision;
	import flash.ui.Mouse;
 
	public class Main extends Sprite
	{
		private var hit1:CircleCollision;
 
		private var  hit2:CircleCollision;
 
		private var shar:Shar;
 
		private var zloi:SharZloi;
 
		private var small:SharSmall;
 
		public function Main():void 
		{
			shar= new Shar();
			addChild(shar);
 
			zloi = new SharZloi();
			addChild(zloi);
 
			small = new SharSmall();
			addChild(small);
 
			Mouse.hide();
 
			stage.addEventListener(Event.ENTER_FRAME, onFrame)
 
		}
 
		private function onFrame(e:Event):void
		{
			hit1 = new CircleCollision(zloi as DisplayObject, shar as DisplayObject);
			addChild(hit1);
 
			if (hit1.Collision)
			{
				trace("BOOM")
			}
 
			hit2 = new CircleCollision(shar as DisplayObject, small as DisplayObject);
			addChild(hit2);
 
			if (hit2.Collision) //именно тут происходит проверка столкновения.
			{
				this.removeChild(small);
				small = new SharSmall();
			    this.addChild(small);
			}
		}
	}
}
Жду вашей помощи.

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

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

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


 


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


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