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

serenkiy 15.03.2009 22:37

Все, разобрался с Вашим кодом.
Проблема в том, в методе createMainObject (в классе родителя) Вы создаете экземпляр класса MapObject (Он же в свою очередь наследуется от mainObject) Через super Вы вызываете не ту функцию, которая Вам нужна (в родительском объекте), а функцию предка.
Короче говоря, у Вас присутствует в проекте 2 независимых класса - mainObject и MapObject(наследуемый от mainObject). Каждый работает со своими методами. Поэтому разные результаты. Т.к. вы не вызывали метод CreateMainObject() в классе MapObject, то у вас в mc ничего не добавляется и ,следовательно, при countObject результат - 0. Я вижу такое решение:

Родитель:
Код AS3:

package {
 
        import flash.display.MovieClip;
 
        public class mainMap
      {
                public var mc:MovieClip = new MovieClip();
 
                public function createMainObject():void
                  {
                        for(var i:uint=0; i<5; i++) {
                                var clip:MovieClip = new MovieClip();
                                mc.addChild(clip);
                        }
                        countObj();
                        var obj:MapObject = new MapObject();
                        obj.createMapObject(this);
                }
 
                public function countObj():void
                  {
                        trace(mc.numChildren);
                }       
        }
}

Дочерний:
Код AS3:

package {
    public class MapObject extends mainMap
    {
        public function createMapObject(p:mainMap):void
        {
              p.countObj();
        }       
    }
}

Я проверил, у меня все работает.

RaVeN-Nikma 16.03.2009 14:53

serenkiy Спасибо, действительно теперь все работает как надо. Спасибо

Котяра 16.03.2009 15:24

вызов методов суперкласса
 
предыдущий код никак не относится к вызову метода суперкласса
вот пример из официального руководства
Код AS3:

package { 
    import flash.display.MovieClip;
    public class SuperExample extends MovieClip
    {
        public function SuperExample()
        {
            var myExt:Extender = new Extender()
            trace(myExt.thanks()); // output: Mahalo nui loa
        }
    }
}
 
class Base {
    public function thanks():String
    {
        return "Mahalo";
    }
}
 
class Extender extends Base
{
    override public function thanks():String
    {
        return super.thanks() + " nui loa";
    }
}


CrazyFlasher 16.03.2009 15:54

Код:

// output: Mahalo nui loa
это по-индусски? :eek:

Котяра 16.03.2009 17:40

что-то гавайское.. типа большое спасибо.


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

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