Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Type was not found при наследовании. (http://www.flasher.ru/forum/showthread.php?t=139331)

uncle_sam 28.04.2010 14:53

Type was not found при наследовании.
 
работаю во Flashdevelop. в папке src создаю папку panels. в папке panels создаю класс BasicPanel extends Sprite. В этой же папке создаю класс MainDrawObjectsPanel, который наследуется от BasicPanel.

в классе Main делаю импорт import panels.*;
в итоге в классе Main проекта объект базового класса BasicPanel создается без проблем. объект класса MainDrawObjectsPanel создать не могу т.к. вылезает Error: Type was not found or was not a compile-time constant: MainDrawObjectsPanel.


делал классы и public и internal, в одном файле, в разных и все в различных вариациях. но комилятор не видит типа расширенного класса. объясните мне в чем моя ошибка. я бьюсь с этим г*вном уже 2й день. спасибо.
код классов на всякий случай. некоторые функции не пишу, т.к. в данном вопросе они роли не играют.

BasicPanel.as:

Код AS3:

package panels
{
 
 
        import flash.display.Shape;
        import flash.display.Sprite;
        import caurina.transitions.Tweener;
        import flash.events.Event;
 
 
 
 
        public class BasicPanel extends Sprite 
        {
 
 
                public var isShown:Boolean;
                public var movingContainer:Sprite;
                private var x0:uint;
 
 
 
 
                public function BasicPanel() {
 
                        buildInterface();
 
                }
      }
}


MainDrawObjectsPanel.as:

Код AS3:

package panels
{
 
 
 
        import panels.BasicPanel;
        import flash.display.Sprite;
        //import caurina.transitions.Tweener;
 
 
        class  MainDrawObjectsPanel extends BasicPanel
        {
 
                public function MainDrawObjectsPanel() {
 
 
                        someNewFunction()
 
                }
 
 
                private function  someNewFunction():void {
                        trace(123);
                }
        }
 
}


i.o. 28.04.2010 15:26

Класс MainDrawObjectsPanel нужно сделать public. И в разных файлах каждый написать.
Создать новый проект в отдельной папочке только с этими 2мя классами, убедиться, что они лежат в папке panels. Программно создать BasicPanel и MainDrawObjectsPanel. Если во флэше работаете, то не назначайте в тестовом проекте эти классы для библиотечных символов.
Напишите классы вначале без функций, а потом добавляйте по одной.

Волгоградец 28.04.2010 15:59

Класс MainDrawObjectsPanel по умолчанию internal, т.е. доступен только в пакете.

Котяра 28.04.2010 16:18

Вложений: 1
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
        import panels.MainDrawObjectsPanel;
 
        /**
        * ...
        * @author k0t0vich
        */

        public class Main extends Sprite
        {
 
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
                        var test:MainDrawObjectsPanel = new MainDrawObjectsPanel();
 
                }
 
        }
 
}

Код AS3:

package panels 
{
        import flash.display.Sprite;
 
        /**
        * ...
        * @author k0t0vich
        */

        public class BasicPanel extends Sprite
        {
 
                public function BasicPanel()
                {
                        super();
                        buildInterface();
                }
 
                private function buildInterface():void
                {
                        trace("BasicPanel.buildInterface");
 
                }
 
        }
 
}

Код AS3:

package panels 
{
        import panels.BasicPanel;
 
        /**
        * ...
        * @author k0t0vich
        */

        public class MainDrawObjectsPanel extends BasicPanel
        {
 
                public function MainDrawObjectsPanel()
                {
                        super();
                        someNewFunction();
                }
 
                private function someNewFunction():void
                {
                        trace("MainDrawObjectsPanel.someNewFunction");
 
                }
 
        }
 
}

output:
Цитата:

BasicPanel.buildInterface
MainDrawObjectsPanel.someNewFunction
FD проект во вложении Вложение 24323.

uncle_sam 28.04.2010 18:00

рассматривал и такой вариант, думал дело в super() но все равно видимо величина радиуса кривизны моих рук еще достаточно велика...
Котяра, в итоге скопировал ваши файлы, заменив свои и omfg! в трэйсе тоже самое что и у вас. СПАСИБО БОЛЬШОЕ!!! Вы - настоящий котяра! ^_^
Не ожидал что так быстро придут ответы. Еще раз всем спасибо!!!


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

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