Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   обращение несуществующего свойства... (http://www.flasher.ru/forum/showthread.php?t=143903)

Марище 28.08.2010 20:21

обращение несуществующего свойства...
 
все просто, создаем на сцене 2 объекта(ребенка) (назовем их obj0 и obj1 ),
как сделать чтобы при нажатии на obj1, obj0 двигался (или исчезал, или делал хоть что-нибудь),
короче, как из одного объекта обратиться к другому?
Нарисовал для obj1 вот такой файл knopka.as
Код AS3:

package  {
        import flash.display.MovieClip;
        import flash.events.Event;
          import flash.events.MouseEvent;
 
        public class knopka extends MovieClip{
 
                public function knopka() {
                        addEventListener(MouseEvent.CLICK, nazatie)
                }
                function nazatie(evt:MouseEvent)
                                        {parent.removeChild(obj0);}
        }       
}

результат "обращение несуществующего свойства obj0"

Чтобы сдвинуть вместо
Код AS3:

parent.removeChild(obj0)

пробовал написать
Код AS3:

parent.obj0.x+=10;

пробовал
Код AS3:

root.obj0.x+=10;

ничего не получается, "обращение возможного неопределенного свойства obj0..."

помогите пожалуйста...
первая попытка перейти на AS3...

zatoichi 28.08.2010 20:32

Дело в том что ваш класс обращается к parent как к DisplayObjectContainer'у, а у класса DisplayObjectContainer нет свойства obj0, поэтому при обращении надо указывать к какому классу обращаетесь: например, (parent as MainClass).obj.x.
Другой вариант сгенерировать некоторое событие в этом классе (dispatchEvent(new MyEvent(MyEvent.MYCLICK,true), где true - это bubbles) и поймать его в родителе (parent.addEventListener(MyEvent.MYCLICK,deleteOBJ0))

Добавлено через 1 минуту
Ну или в принципе сгенерить любое событие (можно даже самим родителем) и поймать в родителе

Марище 31.08.2010 01:58

Спасибо за ответ, но так чего-то не получилось.
Выход нашел:
вместо
Код AS3:

parent.obj0.x+=10;

надо писать
Код AS3:

parent.getChildByName("obj0").x+=10

а при создании obj0 обязательно написать
Код AS3:

obj0.name="obj0"



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

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