Форум 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=118722)

sabarn 02.12.2008 13:05

подскажите, как увидеть клип из конструктора
 
Подскажите, я новичок в as3, как можно из динамического класса увидеть то, что лежит на сцене, или каким образом создавать персонажа.
У меня есть главный класс MainClass, он вызывает
Код AS3:

var tempPersonage:MovieClip=new Personage();
addChild(tempPersonage);

Класс Personage имеет вид
Код AS3:

package main
{
        import flash.display.Sprite;
        import main.MainClass;
        import flash.display.Graphics;
        import flash.display.MovieClip;
 
        public dynamic class Personage extends MovieClip
        {
 
                public function Personage()
                {
                        trace(MainClass.getChildByName('myBody'));
                        //хотя бы обратиться к myBody!
                }
        }
}

Я хочу, чтобы когда порождались объекты от класса Personage, чтобы при этом созданный персонаж обладал телом, нарисованном в клипе myBody, который лежит на сцене.
Я наверное запутался и всё не так делаю. Подскажите пожалуйста, как можно разрешить эту проблему?

VovkaMorkovka1 02.12.2008 13:09

Надо не из конструктора, а в методе который срабатывает по ENTER_FRAME

sabarn 02.12.2008 13:13

подскажите, как можно это сделать?

wvxvw 02.12.2008 13:17

Судя по импорту MainClass - это Class, а не DisplayObject, у него нету метода getChildByName(). Нужно получить ссылку на созданый экземпляр MainClass и искать ребенка у него.

sabarn 02.12.2008 13:22

wvxvw, а как можно получить ссылку на созданный экземпляр MainClass?

Gaen 02.12.2008 13:58

Вы добавили персонаж на сцену, и теперь можете спокойно добавлять руки-ноги внутрь персонажа, не надо для этого обращаться к родительскому клипу.

wvxvw 02.12.2008 14:01

А вы его не можете создать не получив ссылки :) Вот только я не знаю где и как вы его создаете. Т.е. предположим, создаете вы его так:
var mainClass:MainClass = new MainClass(); тогда mainClass и new MainClass() - это и есть ссылки.

Loshadka 02.12.2008 17:02

Если я правильно понял, то вам нужен тако код:
Код AS3:

package main
{
        import flash.display.Sprite;
        import main.MainClass;
        import flash.display.Graphics;
        import flash.display.MovieClip;
 
        public dynamic class Personage extends MovieClip
        {
 
                private parent_main:MainClass = new MainClass();
 
                public function Personage(parent_m)
                {
                        parent_main = parent_m; //сохраняем переданную ссылку на родителя
 
                        trace(MainClass.getChildByName('myBody'));
                        //хотя бы обратиться к myBody!
                }
        }
}

И создавать персанажа, передавая ему ссылку на родителя:
Код AS3:

var tempPersonage:MovieClip=new Personage(this); //this - ссылка на родитея
addChild(tempPersonage);

Но это неправильно, как вам уже сказали выше, с точки зрения ООП (класс - это закрытая структура).

etc 02.12.2008 23:26

Цитата:

Сообщение от VovkaMorkovka1 (Сообщение 780994)
Надо не из конструктора, а в методе который срабатывает по ENTER_FRAME

О боже мой, а события ADDED и ADDED_TO_STAGE применять уже не модно?


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

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