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

Smrad 26.02.2009 15:31

Странные ошибки при работе со вспомогательными классами.
 
Код AS3:

package TestPackage 
{
        import Entity.StatableObject;
        public class Test extends StatableObject
        {
        }
}
 
import flash.display.MovieClip;
class ProblemClass1 extends MovieClip
{
}
class ProblemClass2 extends MovieClip
{
}

Такой код порождает ошибку "VerifyError: Error #1014: Не удалось найти класс Entity::StatableObject". Причем, как ни странно, дело в двух вспомогательных классах ProblemClass1 и ProblemClass2, а конкретнее в том, что они имеют один базовый класс MovieClip. Дело даже не в MovieClip'е а в том, что ProblemClass1 и ProblemClass2 имеют одинаковую базу. Т.е. если базовые классы ProblemClass1 и ProblemClass2 различные ошибки нет, иначе есть.

Кто-нибудь сталкивался с подобным?

wvxvw 26.02.2009 15:57

Да, сталкивался: 1. перед каждым новым классом нужно писать его импорты, но это тоже не всегда помогает. 2. можно попробовать их не в internal а в какой-нибудь другой неймспейс положить
Вы бы еще больше заглавных букв напихали в разные неподходящие места - вас бы еще тяжелее понять было бы.

Smrad 26.02.2009 16:53

Цитата:

Сообщение от wvxvw (Сообщение 801347)
Да, сталкивался: 1. перед каждым новым классом нужно писать его импорты, но это тоже не всегда помогает. 2. можно попробовать их не в internal а в какой-нибудь другой неймспейс положить
Вы бы еще больше заглавных букв напихали в разные неподходящие места - вас бы еще тяжелее понять было бы.

Ни первое, ни второе, ни первое и второе не помогает :(, видимо, придется плодить файлы.

cleptoman 26.02.2009 17:14

у меня все работает.. думается мне, что просто не находит Entity.StatableObject для импорта

Smrad 26.02.2009 18:32

Цитата:

Сообщение от cleptoman (Сообщение 801365)
у меня все работает.. думается мне, что просто не находит Entity.StatableObject для импорта

Да всё там находит см. строку import Entity.StatableObject;
Если свойство типа TestPackage.Test нигде не объявлять, то ошибки само собой не будет.

cleptoman 26.02.2009 19:00

Код AS3:

package {
        import flash.display.Sprite;
        public class Test extends Sprite{
                public function Test(){
                        var test:Test2 = new Test2();
                        var test2:Test3 = new Test3();
                }
        }
 
}
import flash.display.Sprite;
class Test2 extends Sprite{
        function Test2(){
                trace("yo");
        }
}
 
class Test3 extends Sprite{
        function Test3(){
                trace("yo2");
        }
}

вот что у меня работает

"Да всё там находит см. строку import Entity.StatableObject"
это далеко не факт, что находит.

Smrad 27.02.2009 10:46

Ну так код-то другой. Попробуйте пронаследовать Test от NewPackage::NewClass, где NewClass будет потомком MovieClip'а и получите ошибку "Не удалось найти класс NewPackage::NewClass.".
Видимо дело всё-таки в потрохах флеша, каких-то внутренних связях и т.п.

Яски 27.02.2009 18:00

Вы знаете, что класс Entity.StatableObject должен быть описан в файле, расположенном в папке Entity, в файле StatableObject.as и в классе StatableObject должен быть прописан package с именем Entity.

Smrad 27.02.2009 19:04

Цитата:

Сообщение от Яски (Сообщение 801623)
Вы знаете, что класс Entity.StatableObject должен быть описан в файле, расположенном в папке Entity, в файле StatableObject.as и в классе StatableObject должен быть прописан package с именем Entity.

Знаю.


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

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