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

DarkKnight2009 18.07.2011 22:12

Наследование
 
Здравствуйте.
Подскажите пожалуйста.
Есть главный класс
Код AS3:

package
{
        import flash.display.MovieClip;
 
        public class MainClass extends MovieClip
        {
                private var test:TestClass = new TestClass();
 
                public function MainClass()
                {
                        trace("Main Class");
                        addChild(test);
                }
                public function makeSound():void
                {
                        trace("This is SuperClass");
                }
        }       
}

Есть класс, который наследуется от него
Код AS3:

package 
{
        public class DoubleClass extends MainClass
        {
                public function DoubleClass()
                {
                        trace("This is DoubleClass");
                }
                public function bark():void
                {
                        trace("DoubleClass: Hello World !!!");
                }
        }       
}

И класс который "вызывает" наследуемый класс
Код AS3:

package
{
        import flash.display.Sprite;
 
        public class TestClass extends Sprite
        {               
                public function TestClass()
                {
                        var double:DoubleClass = new DoubleClass();
                        double.makeSound();
                        double.bark();
                }
        }       
}

Но trace не выводятся, только ошибка
Код AS3:

Error: Error #2136: SWF-файл file:///C/child/Test.swf содержит недопустимые данные.
        at TestClass()
        at MainClass()

Подскажите, что не так , не могу разобраться :(

GBee 18.07.2011 22:20

Не понял, в MainClass вы создаете TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, ...

Bgg 18.07.2011 22:20

А MainClass это документ класс?

DarkKnight2009 18.07.2011 22:21

Цитата:

Сообщение от Bgg (Сообщение 1012663)
А MainClass это документ класс?

Это главный класс, который подключается к swf

Добавлено через 50 секунд
Цитата:

Сообщение от GBee (Сообщение 1012662)
Не понял, в MainClass вы создаете TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, который создает DoubleClass, который создает TestClass, ...

Вроде, как да... , а что это не правильно ?
Как тогда реализовать ?

КорДум 18.07.2011 22:33

Это называется рекурсия. Уберите наследование от главного класса и замените его MovieClip/Sprite.

DarkKnight2009 18.07.2011 22:37

Цитата:

Сообщение от КорДум (Сообщение 1012671)
Это называется рекурсия. Уберите наследование от главного класса и замените его MovieClip/Sprite.

Так у меня главный клас наследуется от MovieClip, а класс DoubleClass наследуется от MainClass, это не правильно?
Как мне тогде сделать. чтоб класс DoubleClass наследовался от MainClass ?

КорДум 18.07.2011 22:39

Зачем, скажите? В любом случае будет рекурсия.

DarkKnight2009 18.07.2011 22:41

Цитата:

Сообщение от КорДум (Сообщение 1012674)
Зачем, скажите? В любом случае будет рекурсия.

Но если я в классе DoubleClass меняю extends на MovieClip, то у меня возникает ошибка, что
C:\Desktop\child\TestClass.as, строка 10 1061: Обращение к возможно неопределенному методу makeSound через ссылку статического типа DoubleClass.

КорДум 18.07.2011 22:44

Так сделайте там этот метод. У вас на данный момент в классе DoubleClass только
Цитата:

public function bark():void

Bgg 18.07.2011 22:58

Может вам не нужно наследование? Определитесь.


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

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