안녕하세요. 문제가 있으며 그 원인을 알 수 있지만 해결 방법을 모릅니다. 나는 누군가가 좋은 것 내가이 문제를 해결하는 데 도움을 줄 수 ... 오류는 여기Error # 1009 ActionScript 3에서 적을 맞았을 때 총알을 제거하려고 시도했을 때
TypeError: Error #1009: Cannot access a property or method of a null object reference. at Bullet/removeSelf()[C:\Users\Alan\Desktop\game copy\Bullet.as:56] at Bullet/loop()[C:\Users\Alan\Desktop\game copy\Bullet.as:44]
입니다 주요 ACTIONS 총알 PS를 제거 ONE 코드입니다. 죄송합니다. 여기
stage.addEventListener(Event.ENTER_FRAME, testCollisions);
//Check for collisions between an enemies array and a Lasers array
function testCollisions(e:Event):void
{
var tempEnemy:MovieClip;
var tempLaser:MovieClip;
for (var i:int=enemies.length-1; i >= 0; i--)
{
tempEnemy = enemies[i];
for (var j:int=bullets.length-1; j>=0; j--)
{
tempLaser = bullets[j];
if (tempLaser.hitTestObject(tempEnemy))
{
removeChild(tempEnemy);
removeLaser(j);
}
}
}
}
function removeLaser(idx:int)
{
parent.removeChild(bullets[idx]);
bullets.splice(idx,1);
}
제거하는 것이없는 경우는 빈 기능 removeSelf를 호출되어, IT는 IT가
public class Bullet extends MovieClip {
private var speed:int = 30;
private var initialX:int;
public var eligableForRemove:Boolean = false;
public function Bullet(playerX:int, playerY:int, playerDirection:String) {
// constructor code
if(playerDirection == "left") {
speed = -30; //speed is faster if player is running
x = playerX - 25;
} else if(playerDirection == "right") {
speed = 30;
x = playerX + 25
}
y = playerY - 75;
initialX = x; //use this to remember the initial spawn point
addEventListener(Event.ENTER_FRAME, loop);
}
public function loop(e:Event):void
{
//looping code goes here
x += speed;
if(speed > 0) { //if player is facing right
if(x > initialX + 640) { //and the bullet is more than 640px to the right of where it was spawned
removeSelf(); //remove it
eligableForRemove = true;
}
} else if (speed < 0) { //else if player is facing left
if(x < initialX - 640) { //and bullet is more than 640px to the left of where it was spawned
removeSelf(); //remove it
eligableForRemove = true;
} else {
eligableForRemove = false;
}
}
}
public function removeSelf():void
{
if(eligableForRemove == true){trace("remove self");
removeEventListener(Event.ENTER_FRAME, loop); //stop the loop
this.parent.removeChild(this); //tell this object's "parent object" to remove this object
//in our case, the parent is the background because in the main code we said:
//back.addChild(bullet);
}
}
}
}
내가 원인을 생각 제거 BULLET 클래스의 코드입니다. 그래서 eligableForRemove 변수를 추가했지만 올바르게 배치하지 않았을 수 있습니다. 누군가가이 문제를 해결할 수있게 도와 주시면 감사하겠습니다. 또한 기본 액션에서 글 머리 기호를 제거하려고 시도하면 꼭해야합니다. 호출자 오류의 자식. 도와주세요.
오 예, 해결되었습니다. 감사합니다. – AlanZ2223
안녕하세요, 저에게 다른 도움을 주시겠습니까? – AlanZ2223
나는 방금 전진하고 있었지만 내일 또 다른 질문이 있으면 조심할 것이다. –