В настоящее время я участвую в использовании отдельных файлов и классов .as, но после прочтения много всего, похоже, отличается от того, что я читал. Я отправляю этот вопрос с целью обучения, а не только для того, чтобы код работал. Примеры здесь - это проверенные, упрощенные рецензии на мой настоящий проект.Почему мои файлы классов AS3 работают не в порядке?
Мой файл «MyApp.fla» имеет 1 кадр с формой в качестве фона, для параметра DocumentClass установлено значение «MyApp». библиотека имеет символ "Page1" 1 кадра с другим фоном формы, с его установкой класса "Page1"
MyApp.as:
package {
trace("1: DocumentClass file, before class");
import flash.display.MovieClip;
public class MyApp extends MovieClip {
trace("2: DocumentClass file, in the class")
public var setting1:int = 2; //this is a variable which i want to be accesible to other classes, so to the pages being loaded
private var currentPage:MovieClip; //I wanted to create this var in the constructor, but I'm afraid something will explode again :<
public function MyApp() {
trace("3: DocumentClass file, in constructor function");
currentPage = new Page1;
addChild(currentPage);
}
}
}
Page1.as:
package {
trace("4: Page1 file, before class");
import flash.display.MovieClip;
public class Page1 extends MovieClip {
trace("5: Page1 file, in class, before constructor");
public function Page1() {
trace("6: Page1 file, in constructor")
trace(setting1) //According to everything i read this should work since setting1 is public, but it gives me: "1120 Acces of undefined property setting1" so i commented this out for the output.
trace(root);
trace(stage); //both trace null since i haven't used addChild() yet, but now i dont know how to try to reference my variables through the main timeline.
}
}
}
Выход:
- 5: Стр.1 файл, в классе перед конструктором
- 4: Стр.1 файл, перед классом
- 2: DocumentClass файла, в классе
- 1: DocumentClass файл, перед классом
- 3: DocumentClass файла, в конструктор функции
- 6: Page1 файл, в конструктор
- нуль
- нуль
в то время как фон формирует экран, как ожидается, генерируемый вывод полностью выходит из строя из что я ожидал. Мой главный вопрос: Почему мои следы не заказываются 1 -6?
Мой следующий вопрос: Почему конструктор Page1() не ссылается на public var setting1?, я предполагаю, что могу обойтись, передав параметр1 в качестве аргумента в конструктор Page1(), но я избегаю этого в целях обучения.
изменение трассы с помощью this.parent дает ошибку компиляции 1119: доступ к возможно неопределенной настройке свойств1 через ссылку со статическим типом flash.display: DisplayObjectContainer. Я думал, что мой класс Document будет работать так, как если бы это был код на MainTimeline или, точнее, создавал MovieClip в месте MainTimeline и вставлял код конструктора в его фрейм, чтобы говорить и запускать его. И я решил, что мой другой класс будет создан. Теперь кажется, что весь код запускается один раз без создания одного экземпляра. – Scab
Как я уже сказал, если это не сработает, попробуйте эту трассировку (MovieClip (parent) .setting1); – Neguido
trace (MovieClip (parent) .setting1) дает TypeError: Ошибка # 1009: Не удается получить доступ к свойству или методу ссылки на нулевой объект. \t at Page1() \t at MyApp() Я думаю, что я понимаю ваше объяснение относительно порядка, в котором работает код, имеет смысл, хотя и не так, как работает в порядке. Я все еще не понимаю, почему мои классы не могут получить доступ к общедоступным переменным. Я предполагаю, что экземпляры, как только они созданы и/или добавлены, не имеют проблем с доступом к общедоступным переменным друг от друга, но из того, что я прочитал, я понял, что переменные должны быть доступны классам. Это было просто неправильно? – Scab