Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как использовать SWC библиотеку? (не видятся классы из нее) (http://www.flasher.ru/forum/showthread.php?t=136466)

chabapok 17.02.2010 21:31

как использовать SWC библиотеку? (не видятся классы из нее)
 
сделал swc файл, вкомпилив туда один единственный тестовый класс

Код AS3:

package {        
        import flash.display.MovieClip;       
        public class NewClass extends MovieClip{
                public var prob:int = 1;               
                public function NewClass(){
                        super();
                        prob = 2;
                }               
        }
}

создаю файл flash(as3). как это рекомендует гугл, в "файл->параметры публикации->параметры->путь к внешней библиотеке" указываю мой swc.

Пишу класс, и в параметре флешки задаю его как основной класс:
Код AS3:

package{
        import flash.display.MovieClip;
        import NewClass;
        public class MainClass extends MovieClip{               
                function MainClass(){
                        var r = new NewClass();
                        trace(r.prob);
                }               
        }       
}

компилю-запускаю и -- ошибка
ReferenceError: Error #1065: Переменная NewClass не определена.
at MainClass()

Что я делаю не так?

Если эту swc использовать в FD as3 проекте, то все работает, но хочется использовать либу во флеш.

inferrum 17.02.2010 21:41

var r:NewClass = new NewClass();

chabapok 17.02.2010 21:45

попробовал. Теперь при запуске получаю такую простыню:
Код:


verify MainClass()
                        stack:
                        scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ MainClass$]
                        locals: MainClass *
  0:getlocal0
                        stack: MainClass
                        scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ MainClass$]
                        locals: MainClass *
  1:pushscope
                        stack:
                        scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ MainClass$] MainClass
                        locals: MainClass *
  2:getlocal0
                        stack: MainClass
                        scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ MainClass$] MainClass
                        locals: MainClass *
  3:constructsuper 0
                        stack:
                        scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ MainClass$] MainClass
                        locals: MainClass *
  5:findpropstrict NewClass
                        stack: Object
                        scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ MainClass$] MainClass
                        locals: MainClass *
  7:constructprop 3 0
                        stack: *
                        scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ MainClass$] MainClass
                        locals: MainClass *
  10:coerce NewClass
VerifyError: Error #1014: Не удалось найти класс NewClass.

        at MainClass()


udaaff 17.02.2010 22:05

Вы в какой версии флеша работаете?

chabapok 17.02.2010 23:36

cs4 10.0.2

Я победил его, но вопрос не снимается а трансформируется. Поясняю.

У меня получилось откомпилить с библиотекой даже двумя разными способами.

Первый способ. Это если мы идем в файл\создать, там выбираем "проект Flash". Открывается окошко в котором создаем проект, указываем путь корневой директории проекта и путь в swс. B этом окошке есть кнопочка "тестировать проект" - и через нее все работает, хотя ctrl-enter оно все еще не работает.

Второй способ -- это если мы идем в настройки публикации, но не во вкладку "путь к внешней библиотеке", а во вкладку "путь к библиотеке". И в дополнение к тому пути, который там вписан по дефелту, добавляем наш swc. И все работает по ctrl-enter.

А вопрос теперь такой - что это за вкладка такая "путь к внешней библиотеке", для чего она предназначена, если все равно добавленные туда swc не работают?

wvxvw 18.02.2010 01:20

Ваша ошибка говорит о том, что вы преждевременно там чего-то инициализируете, а все потому, что первой строчкой надо обязательно вызывать super(), не класть классы в анонимные пакеты.
Т.е. вот так:
Код:

package my.domain.project.library
{
...
import my.domain.project.anotherLibrary.NewClass;
...
public function MainClass()
{
    var r:NewClass;
    super();
    r = new NewClass();
    trace(r.prob);
}



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

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