Action Script 3.0. Как получить доступ к объекту MovieClip из другого класса?
Итак, у меня есть 2 класса Main и Enemy. В классе Enemy мне нужно использовать переменные, которые объявлены в классе Main.
Вот мой основной класс:
public class Script extends MovieClip {
var hero:MovieClip;
var enemy:MovieClip; //These variables are only for example
public function Game() {
hero.x = 100;
enemy.x = 200; // that's only example
}
function collisionDetected() {
enemy.hitBack(); // this is how I call hitBack function from Enemy class
}
}
И вот мой класс врага:
public class Enemy extends MovieClip {
private var count = 0;
public function hitBack() {
count = 0;
this.addEventListener(Event.ENTER_FRAME, myEnterFrame);
}
private function myEnterFrame(e:Script)
{
if (count == 20) this.removeEventListener(Event.ENTER_FRAME, myEnterFrame);
else
{
count++;
if (hero.x < enemy.x) { //here I need to use variables from Main class
this.x -= 4;
}
else {
this.x += 4;
}
}
}
Я получил следующие ошибки:
1120: Access of undefined property hero.
1120: Access of undefined property enemy.
1 ответ
Вам нужно будет либо перенести этот расчет в основной класс, либо вы также можете передать переменные вражескому классу. Поскольку ваш пример вычеркнут, я не уверен, что лучше в вашем случае, но я бы склонялся к тому, чтобы вывести вычисления из расчета, если у вас есть более чем один враг, пытающийся сделать это.
public class Script extends MovieClip {
var hero:MovieClip;
var enemy:MovieClip; //These variables are only for example
public function Game() {
hero.x = 100;
enemy.x = 200; // that's only example
this.addEventListener(Event.ENTER_FRAME, enterFrame);
}
function collisionDetected() {
enemy.hitBack(); // this is how I call hitBack function from Enemy class
}
function enterFrame(e:Event){
theEnemyMovieclipClass.myEnterCheck(hero,enemy);
}
public class Enemy extends MovieClip {
private var count = 0;
public function hitBack() {
count = 0;
}
public function myEnterCheck(hero,enemy)
{
if (count == 20) {
// DO SOMETHING
}
else
{
count++;
if (hero.x < enemy.x) { //here I need to use variables from Main class
this.x -= 4;
}
else {
this.x += 4;
}
}
}
}
Таким образом, если у вас их несколько, вы можете перебрать их все и вызвать один и тот же метод onEnterFrame.