В моей программе Flash я пытаюсь запустить функцию внутри объекта.Объект использует класс с именем "SkullDemon.as."Функция, которую я пытаюсь запустить, называется "moveSkullDemon ();"эта функция закодирована в классе «SkullDemon.as».
Мой основной класс документа - «TME2d_Main.as».В этом файле я создаю экземпляр класса Skull Demon следующим образом:
public var skullD1b:SkullDemon;
skullD1b = new SkullDemon();
skullD1b.x = 2990.75;
skullD1b.y = 836.95;
skullDemonContainer.addChild(skullD1b);
'skullDemonContainer', в котором хранятся экземпляры SkullDemon, помещается в другой контейнер, называемый 'envContainer', который добавляется вэкран с использованием этой строки кода:
this.addChild(envContainer);
Экземпляр SkullDemon создается и загружается на экран очень хорошо.Проблема возникает, когда я пытаюсь запустить любую функцию в классе SkullDemon.
Как упоминалось ранее, я пытаюсь вызвать функцию SkullDemon.moveSkullDemon () для экземпляра skullD1b.На данный момент функция moveSkullDemon () просто перемещает объект SkullDemon влево.
Я пытался вызвать эту функцию из функции конструктора SkullDemon, но это не работает.Фактически, любой код, написанный в конструкторе SkullDemon, не выполняется при создании объекта Skull Demon.Я пытался создать EventListener в классе SkullDemon, который вызывает «moveSkullDemon ()», но это ничего не делает.
Я пробовал следующие методы, чтобы запустить функцию «moveSkullDemon ()»:
1: Вызов «moveSkullDemon ()» из «TME2d_Main» выглядит следующим образом:
skullD1b.moveSkullDemon();
Но это вызывает ошибку (# 1006), говорящую, что «moveSkullDemon» не является функцией.
2: Делать то же самое, что и # 1, за исключением того, что у меня нет скобок в вызове функции:
skullD1b.moveSkullDemon;
3: Создание EventListener внутри 'TME2d_Main' для экземпляра 'skullD1b', которыйвызывает его функцию 'moveSkullDemon':
skullD1b.addEventListener(Event.ADDED, skullD1b.moveSkullDemon);
Это вызывает еще одну ошибку: «Ошибка № 2007: прослушиватель параметра должен быть ненулевым».Он также постоянно находит «нулевую» ошибку ссылки:
"1009: Cannot access a property or method of a null object reference.
at classes::TME2d_Main/controlPlayer()"
Я не знаю, почему эта проблема относится к методу 'controlPlayer ()', поскольку он вообще не включает экземпляр Skull Demon.'controlPlayer ()' вызывается через EventListener с этим кодом внутри 'TME2d_Main':
player.addEventListener(Event.ENTER_FRAME, controlPlayer);
4: Создание EventListener для 'SkullDemonContainer', который вызывает функцию перемещения:
skullDemonContainer.addEventListener(Event.ADDED, skullD1b.moveSkullDemon);
Это вызывает ту же ошибку, что и в # 3.
У меня была эта проблема в течение нескольких дней, и я не знаю, что ее вызывает.Вот мой код в функции 'moveSkullDemon ()':
public function moveSkullDemon() {
trace("skull demon moving!");
this.x -= 5;
// If the Player has not hit the 'floor,' increase his falling
//speed
if (! floor.hitTestPoint(this.x, this.y, true)) {
this.y += this.sdGravity;
// The Skull Demon is not on the ground when he's not touching it
sdOnGround = false;
}
// Increase the 'sdYVel' variable so that the Skull Demon will fall
// progressively faster down the screen. This code technically
// runs "all the time" but in reality it only affects the Skull Demon
// when he's off the ground.
sdYVel += sdGravity;
// Increase the Skull Demon's 'y' coordinate by the 'sdYVel' value
if (! sdOnGround) {
this.y += sdYVel;
}
}
Спасибо за любую помощь, которую вы можете предложить.