![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
|
Цитата:
Цитата:
а если переделать классы шар и шарзлой удалив в них определения одноименных с главным классом свойств или забирать в них ссылку на объект из свойств Main класса должно помочь. Вообще может исходя из задачи будет проще сориентироваться? Добавлено через 3 минуты Цитата:
|
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Добавил в класс Shar экземпляр класса SharZloi.НО... теперь поведение объекта класса SharZloi на сцене вообще не понятно. Хотя потом дошел, что теперь отсчет координат объекта класса SharZloi идет относительно объекта класса Shar, ведь мы именно в этот класс добавляем.А мне ведь надо координаты относительно сцены.
Значит, чтобы координаты для обоих объектов классов были одинаковы относительно сцены, то надо добавлять их только в класс Main. Верно я понял? |
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Вот возникло еще одно непонимание. прошу помощи.
Добавил еще один маленький шарик SharSmall, который удаляется и заново добавляется на сцену в случае столкновения. Вот код двух классов: 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) } } } TypeError: Error #1009: Cannot access a property or method of a null object reference. at SharSmall/: nFrame()при этом продолжается работа, но при каждом столкновении прога тормозит все больше. Ошибка возникает именно при столкновении объектов. То есть если нет столкновения, то и нет ошибки. Если вместо stage.stageWidth ставлю просто значение 550, то все работает без проблем. Вот основной класс, где происходит обработка столкновения объектов. 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|