Показать сообщение отдельно
Старый 14.01.2013, 19:13
In8Finity вне форума Посмотреть профиль Отправить личное сообщение для In8Finity Найти все сообщения от In8Finity
  № 1  
Ответить с цитированием
In8Finity

Регистрация: Jan 2010
Сообщений: 187
Question Как в одном классе увидеть другой?

Здраствуйте.
Пишу арканоид. Пробую использовать классы.
Не получается из одного класса отслеживать что происходит в другом.
Поясню.
Пока самое начало - у меня класса всего три: Main, Ball и Platform.

в Main.as просто добавляется на сцену фон и запускаются (наверное тут другое слово правильнее) остальные два класса.

Код AS3:
		private function createScene():void 
		{
			var back_game:MovieClip = new Back_mc(); addChild(back_game);
 
			addChild ( new Platform() );
			addChild ( new Ball() );
		}
В Platform.as добавляется на сцену платформа для отбивания шарика и привязывается к мышке.

Код AS3:
package  
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Platform extends Sprite
	{
 
		private var platform:MovieClip;
 
		public function Platform() 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			createPlatform();
 
			stage.addEventListener(MouseEvent.MOUSE_MOVE, platformMouseMove);
			this.addEventListener(Event.ENTER_FRAME, platformKeyboardMove);
		}
 
		private function createPlatform():void
		{
			platform =  new Platform_mc();
			addChild(platform);
			platform.x = 300;
			platform.y = 445;
		}
 
 
		// двигаем платформу вслед за мышкой
		public function platformMouseMove(e:MouseEvent):void
        {
	    platform.x = mouseX - 50;
            if (platform.x < 10) { platform.x = 10 }
            if (platform.x + 100 > 630) { platform.x = 630 - 100}
        }
	}
}
И в классе Ball.as всё что связано с шариком. Отскоки его от стен и взаимодействие с платформой.
Вот у меня как раз не получается взаимодействовать с платформой. (см. закомменченную строку в самом низу - это то, как я себе это представлял)

Код AS3:
package  
{
	import flash.display.*;
	import flash.events.Event;
 
	public class Ball extends Sprite
	{
		private var ball:MovieClip;
		private var speedX:int = 3;
                private var speedY:int = -3;
 
		public function Ball() 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			createBall();
			addEventListener(Event.ENTER_FRAME, moveBall);
		}
 
		// создаём ball
		private function createBall():void
		{
			ball =  new Ball_mc();
			addChild(ball);
			ball.x = 320;
			ball.y = 400;
		}
 
		private function moveBall(e:Event = null):void 
		{
			ball.x += speedX;
			ball.y += speedY;
 
 
			// Столкновение со стенкой
			if (((ball.x + 4) > 630) || ((ball.x - 4) < 10) ) 
			speedX = - speedX;
			if (((ball.y + 4) > 470) || ((ball.y - 4) < 50) )
			speedY = - speedY;
 
			// Столкновение с platform
			//if (ball.hitTestObject(platform)) speedY = - speedY;
		}
	}
}
Как же мне увидеть в классе Ball, что мой шарик столкнулся с платформой?