我正在编写代码,让敌人检测与玩家的冲突。在我的Enemy类中,我有:导入flash.display.MovieClip;导入flash.events.Event;
public class Enemy extends MovieClip {
var Player: MovieClip;
public function Enemy() {
this.addEventListener(Event.ENTER_FRAME, EnemyUpdate);
}
function setPlayer(_Player: MovieClip) {
Player = _Player;
}
function EnemyUpdate(_event: Event) {
var enemyHit: Boolean = this.hitTestObject(Player.Character.Legs);
if (enemyHit) {
trace("OUCH!!");
}
}
}在我的主类中,我尝试使用以下代码将播放器MovieClip发送到Enemy Class脚本:
public function Main() {
enemy.setPlayer(player);
}MovieClip敌人有敌人脚本附加在它上面。当我运行程序时,播放器变量为空。如何让播放器识别播放器MovieClip?
发布于 2017-06-29 00:30:34
这是因为你在Enemy被实例化之后设置了你的播放器。在Enemy构造函数中,你有EnterFrame listener。要修复该错误,请按如下所示更改代码:
public function Enemy() {
// empty constructor, you can remove it if there is no other logic in it
}
function setPlayer(_Player: MovieClip) {
Player = _Player;
// the Player variable is not null anymore.
this.addEventListener(Event.ENTER_FRAME, EnemyUpdate);
}https://stackoverflow.com/questions/44803792
复制相似问题