![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2010
Сообщений: 187
|
Здраствуйте.
Пишу арканоид. Пробую использовать классы. Не получается из одного класса отслеживать что происходит в другом. Поясню. Пока самое начало - у меня класса всего три: Main, Ball и Platform. в Main.as просто добавляется на сцену фон и запускаются (наверное тут другое слово правильнее) остальные два класса. private function createScene():void { var back_game:MovieClip = new Back_mc(); addChild(back_game); addChild ( new Platform() ); addChild ( new Ball() ); } 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} } } } Вот у меня как раз не получается взаимодействовать с платформой. (см. закомменченную строку в самом низу - это то, как я себе это представлял) 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; } } } |
|
|||||
|
Вместо
Нужно private var _platform:Platform = new Platform(); private var _ball:Ball = new Ball(); addChild (_platform); addChild (_ball); А вы случаем дальше SharedObject не будете прикручивать? ![]()
__________________
adobe AS3 manual |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|