У меня возникли проблемы с вызовом функций из других классов. Я хочу вызвать функцию в одном классе, которая обновляет отображение оценки в другом классе. Код ошибки для этого:actionscript 3 - ошибка # 1009 вызов функции вызова из другого класса
TypeError: Ошибка # 1009: Не удается получить доступ к свойству или методу ссылки на нулевой объект. в code.functions :: EnemyYellow) [код \ функции \ EnemyYellow.as: 18] ( в коде :: Main() [\ код \ Main.as: 27]
бы признателен, если кто-то может мне помочь я создал два основных файла с кодом, вызывающим проблему. Обычно он не настроен так, я просто сделал это для тестирования, и поэтому я могу четко объяснить проблему.
Главный файл:
package code {
import flash.display.MovieClip;
import flash.events.*;
import code.*;
public class Main extends MovieClip {
public var _enemy:EnemyYellow;
public var playerHP:Number;
public function Main() {
playerHP = 10;
_playerHPdisplay.text = playerHP.toString();
trace(playerHP)
_enemy = new EnemyYellow;
}
public function lowerHP():void
{
playerHP = playerHP - 1;
_playerHPdisplay.text = playerHP.toString();
trace(playerHP)
}
}
}
Второй файл:
package code.functions {
import flash.display.MovieClip;
import flash.events.*;
import code.Main;
public class EnemyYellow extends MovieClip {
public var _main:Main;
public function EnemyYellow() {
_main.lowerHP();
trace ("done")
}
}
}
Я также попытался добавить _main = новый Main; во втором файле, но игра просто загружается с помощью черного экрана и ошибка в отношении недопустимых данных.
_playerHPdisplay.text является отображение на экране. –
Подумайте о классах как ветках дерева. Каждая ветка знает, как долго она идет оттуда, но не знает, что перед ней. Корень дерева (корень вашего проекта) знает все. Итак, теперь, когда вы получили новую ветку ('Main'), вам нужно либо передать информацию о вещах раньше (' _playerHPdisplay'), либо она не будет работать. Передайте его как переменную в конструктор, например. Есть много способов сделать это - узнать больше о классах в AS3. –