Показать сообщение отдельно
Старый 13.01.2013, 14:50
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 15  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Ничего странного. Эта запись, frameq, говорит компилятору что данный библиотечный класс будет использоваться, то есть фактически Вы его импортируете (умный компилятор не импортирует классы, которые не используются в коде, даже если Вы напишите руками импорт; использование через getDefinitionByName компилятором не распознается, так как там используется не класс, а только строка с его именем).
Вообще-то эта строка говорит "я — кадр мувиклипа класса Прелоадер". Однако же Прелоадер должен быть точкой входа в программу, нет? А так — Точка входа не может быть частью чего-то бОльшего, например кадром мувиклипа. Документ-класс включает в себя всё остальное. Здесь фишка лишь в том, чтобы "всё остальное" не грузилось в первый кадр.
Компилятор(!) должен был ошибку выдавать, то есть дело не должно было дойти до свф-файла. Включите строгий режим компиляции. А впрочем, у Вас наверное и сам класс Прелоадер не вкомпиливался, так как классом документа был другой, и Прелоадер в нем уже не упоминался, то есть был "не нужным" и компилятор его даже не смотрел.
Вот теперь хоть понятно что делает строчка frameq и тег Frame.
А вот когда дело начало до прелоадера доходить, то компилятор все ошибки показал).

И когда я говорил, что нашел причину и якобы решил проблему, то видимо я рано сделал выводы). У меня есть класс frame, и класс preloader. preloader документ-класс. Он по-идее должен выполнится первым, а в итоге его содержимое появляться только после загрузки frame. Т.е. как Вы я так понял и говорили: 'Здесь фишка лишь в том, чтобы "всё остальное" не грузилось в первый кадр'.
Если ещё кому-то не надоело отвечать на мои вопросы, то надеюсь кто-то скажет, как не дать загрузить frame раньше, чем само содержимое документ-класса).
frame
Код AS3:
[Frame(factoryClass = "preloader")]
public class frameq extends MovieClip {
var BG = new bg();
public function frameq() {
	addChild(BG);
	BG.x = 0;
	BG.y = 0;
}
preloader
Код AS3:
public class preloader extends MovieClip
{
	private var BTN:MovieClip = new btn();
	public function preloader() {
		addChild(BTN);
		BTN.x = 300;
		BTN.y = 300;
		BTN.addEventListener(MouseEvent.CLICK, clickb);
	}
 
	function clickb(e:MouseEvent):void {
		frameq
		var mainClass:Class = getDefinitionByName("frameq") as Class;
		var mainC = new mainClass();
		addChild(mainC as DisplayObject);
	}
 
}