2015-11-09 3 views
0

Итак, я работаю над проектом во flash, и недавно решил, что хочу переключить свой тестовый файл, чтобы стать основным классом внутри моего проекта. Файл называется ColorClass.as, а связанный с ним файл .fla - ColorClass.fla. Они расположены в том же каталоге, а класс Document ColorClass.fla - это ColorClass. Я использую загрузчик внутри ColorClass.as для загрузки внешнего SWF следующим образом:Доступ к неопределенному свойству «loader»

public var loader:Loader = new Loader(); 
addChild(loader); //adding loader 
loader.load(new URLRequest("../Resource/flash/WheelClasses.swf")); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,wheelsLoaded); 

Я пытаюсь создать тестовый файл, color_Test.as (и связанный с ним color_Test.fla), который загружает ColorClass.swf и получает определение класса, которое будет использоваться в тестовом файле.

Однако, когда я пытаюсь скомпилировать ColorClass.as/.fla и создать файл с расширением .swf, я получаю несколько экземпляров

Access of undefined property loader. 

и

Call to a possibly undefined method addChild. 

Эти ошибки полностью происходит независимо от color_Test. Я что-то здесь не так? Я просто пытаюсь скомпилировать ColorClass.as/.fla, который я мог бы сделать, прежде чем пытаться изменить его, чтобы стать другим классом.

ответ

1

В классе AS3 весь функциональный код должен содержаться в функции.

Так, в стороне от первой линии (которая является объявлением переменного), остальные просто плаваем в классе не завернутом в функции:

public var loader:Loader = new Loader(); //THIS LINE IS FINE 

//THESE THREE LINES NEED TO LIVE IN A FUNCTION 
addChild(loader); 
loader.load(new URLRequest("../Resource/flash/WheelClasses.swf")); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,wheelsLoaded); 

Если вы хотите код, указанный выше, чтобы выполнить сразу , поместите его в функцию constructor (функция, имя которой соответствует имени класса).

public function ColorClass { 
    addChild(loader); //adding loader 
    loader.load(new URLRequest("../Resource/flash/WheelClasses.swf")); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,wheelsLoaded); 
} 
+0

Пожалуйста, сделайте ваш ответ более полезным для будущих читателей, объяснив, что это за решение. Покажите, как вы изменили код, по крайней мере. – BadFeelingAboutThis

+0

Я сделал это сам на этот раз (в основном угон вашего ответа). Пожалуйста, обратите внимание на то, как я объясню, почему проблема существует, и я предлагаю решение или альтернативу. Я также ссылаюсь на ссылки, которые могут помочь кому-то лучше понять. Это хорошая формула для написания хороших ансеров. – BadFeelingAboutThis

+0

Спасибо за это. У меня был очень долгий день, когда я задал вопрос, и через 5 минут после того, как я спросил, я посмотрел на код и увидел, как глупо ошибка, которую я делаю. –

Смежные вопросы