![]() |
|
||||||||||
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Возник вопрос в понимании ActionScript.
Создал два символа и подключил к ним классы. И так, есть два класса шаров-мячиков(Shar и SharZloi). Оба эти класса расширяются третьим классом(XYRandom), в котором указаны координаты возникновения экземпляров этих классов на сцене. И затем оба эти класса добавляются в главный класс Main. Мне нужно видеть координаты каждого экземпляра класса в другом классе. Но почему-то выводятся одни нули. Вот код: package { import flash.display.MovieClip; import flash.events.*; public class XYRandom extends MovieClip { public function XYRandom():void { this.addEventListener(Event.ADDED_TO_STAGE, added); } private function added(e:Event):void { this.x = Math.random() * stage.stageWidth; this.y = Math.random() * stage.stageHeight; } } } package { import flash.display.*; import flash.events.*; import com.greensock.*; public class Shar extends XYRandom { public function Shar():void { this.addEventListener(Event.ADDED_TO_STAGE, added) } private function added(e:Event):void { addEventListener(Event.ENTER_FRAME, onFrame) } private function onFrame(e:Event):void { var dx:Number = this.x + mouseX; var dy:Number = this.y +mouseY; TweenLite.to(this, 0.5, {x:dx, y:dy}) } } } package { import flash.events.Event; import flash.display.*; /** * ... * @author */ public class SharZloi extends XYRandom { private var shar:Shar; public function SharZloi():void { this.addEventListener(Event.ADDED_TO_STAGE, added); } private function added(e:Event):void { shar = new Shar(); addEventListener(Event.ENTER_FRAME, onFrame) } private function onFrame(e:Event):void { trace(shar.x)//Выводит нули } } } package { import flash.display.*; import flash.events.*; import com.greensock.*; /** * ... * @author */ public class Main extends Sprite { public function Main():void { var shar:MovieClip = new Shar(); addChild(shar); var zloi:MovieClip = new SharZloi(); addChild(zloi); } } } Объясните пожалуйста мою ошибку. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Шар у вас на сцену не добавляется.
|
|
|||||
|
Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
|
могу ошибаться но
это свойство объекта Main, а выводит значение так как он в более близкой области видимости и найдя его определение внутри класса SharZloi, дальше поиск не происходит. |
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Да... щас добавил экземпляр класса Shar на сцену в классе SharZloi, все работает. Но у меня вопрос: Зачем тогда нужно событие Event.ADDED_TO_STAGE. Ведь по идее оно происходит, когда экземпляр добавлен на сцену. Или я не так понимаю?
|
|
|||||
|
Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
|
все верно оно происходит, но вы добавляете на сцену не тот объект за которым следите.
|
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Шар то добавляется, но в классе Main. Если добавляю в классе SharZloi, то все работает. Вопрос сформулировал выше про событие добавление объекта на сцену.
|
|
|||||
|
Регистрация: Nov 2009
Сообщений: 300
|
В общем тебе не нужно в классе SharZloi, создавать экземпляр класса Shar, он у тебя уже создан в Main.
Тебе просто нужно просто передать в SharZloi ссылку на экземпляр класса Shar и потом использовать его свойства. |
|
|||||
|
Регистрация: Sep 2010
Адрес: Москва
Сообщений: 24
|
собственно в вашем случае достаточно вывести
в свойства уровня класса, а не метода конструктора, эти свойства и будут содержать ссылки на данные объекты. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
shar не добавлен на сцену, соответственно его added не вызвалось и координаты его 0. Зачем shar делается полем SharZloi, если SharZloi расширяет XYRandom?
Почему везде private function added(e:Event):void может, стоит их чуть по-рахному назвать? Меня вот удивило, что оно не ругнулось насчёт override, что, если private, то метод уже не виртуальный во флэше выходит?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
||||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Понял главную ошибку: Объект еще не на сцене, а я вывожу его координаты.
Цитата:
Цитата:
Цитата:
![]() Цитата:
Цитата:
Или о чем ты? |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|