Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.02.2010, 21:31
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 1  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
По умолчанию как использовать 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 проекте, то все работает, но хочется использовать либу во флеш.

Старый 17.02.2010, 21:41
inferrum вне форума Посмотреть профиль Отправить личное сообщение для inferrum Найти все сообщения от inferrum
  № 2  
Ответить с цитированием
inferrum

Регистрация: Jun 2007
Сообщений: 83
var r:NewClass = new NewClass();

Старый 17.02.2010, 21:45
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 3  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
попробовал. Теперь при запуске получаю такую простыню:
Код:
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()

Старый 17.02.2010, 22:05
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Вы в какой версии флеша работаете?

Старый 17.02.2010, 23:36
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 5  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
cs4 10.0.2

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

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

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

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

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

Старый 18.02.2010, 01:20
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ваша ошибка говорит о том, что вы преждевременно там чего-то инициализируете, а все потому, что первой строчкой надо обязательно вызывать 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);
}
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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