![](/img/trans.png)
[英]AS3 - Error #1009: Cannot access a property or method of a null object reference
[英]AS3 Error 1009 : Cannot access a property or method of a null object reference
維護
package{
import flash.display.MovieClip;
import flash.events.*;
public class Main extends MovieClip {
public var _root:MovieClip;
public var monsterContainer:MovieClip = new MovieClip();
public var delay = 30;
public function Main(){
addEventListener(Event.ADDED, beginClass);
addEventListener(Event.ENTER_FRAME, enterFrameEvents);
}
function beginClass(e):void{
_root = MovieClip(root);
}
function enterFrameEvents(e):void{
addChild(monsterContainer);
delay -= 1;
if(delay <= 0){
var spawn:Slime = new Slime();
spawn.x = startPoint.x;
spawn.y = startPoint.y;
monsterContainer.addChild(spawn);
delay = 30;
}
}
}
阿羅
package{
import flash.display.MovieClip;
import flash.events.*;
public class Arrow extends MovieClip {
public var _root:MovieClip;
public var facingID;
public function Arrow(){
addEventListener(Event.ADDED, beginClass);
addEventListener(Event.ENTER_FRAME, enterFrameEvents);
}
function beginClass(e):void{
_root = MovieClip(root);
}
function enterFrameEvents(e):void{
trace(_root.monsterContainer == null);
}
}
在輸出中看起來像這樣:
false
false
false
false
false
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Arrow/enterFrameEvents()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Arrow/enterFrameEvents()
起初它說false是因為trace(_root.monsterContainer == null),但是突然說到錯誤1009,當我使用ctrl + shift + enter時,它指向的是trace(_root.monsterContainer == null);
我嘗試了2天,請幫忙
其他代碼:(實際上可能不相關)
敵人
package{
import flash.display.MovieClip;
import flash.events.*;
public class Enemy extends MovieClip {
public var _root:MovieClip;
//Status
public var monsterSpeed;
public var facing = "Right";
//CallingArrow
public var down:Down = new Down();
public function Enemy(){
addEventListener(Event.ADDED, beginClass);
addEventListener(Event.ENTER_FRAME, enterFrameEvents);
}
function beginClass(e):void{
_root = MovieClip(root);
}
function enterFrameEvents(e):void{
//Facing Movement
if(_root.pausing == false){
if(facing == "Right"){
this.x += monsterSpeed;
}else if(facing == "Left"){
this.x -= monsterSpeed;
}else if(facing == "Down"){
this.y += monsterSpeed;
}else if(facing == "Up"){
this.y -= monsterSpeed;
}
}
}
}
唐納斯
package {
import flash.display.MovieClip;
import flash.events.*;
public class Down extends Arrow {
public function Down(){
facingID = "Down";
}
}
史萊姆斯
package {
import flash.display.MovieClip;
import flash.events.*;
public class Slime extends Enemy {
public function Slime(){
monsterSpeed = 5;
}
}
時間軸上沒有其他代碼,只需stop();
如果您需要文件(cs6): http : //www.mediafire.com/download/hz5tptkgftwdipw/Tower_Defense.rar
更改為此:
public function Arrow(){
addEventListener(Event.ADDED, beginClass);
}
function beginClass(e):void{
_root = MovieClip(root);
addEventListener(Event.ENTER_FRAME, enterFrameEvents);
}
在您的代碼中_root
將為NULL ,因為您的對象可能未添加到同一框架中的舞台上,因此
function enterFrameEvents(e):void{
trace(_root.monsterContainer == null);
}
將嘗試訪問NULL對象的monsterContainer
屬性。 因此,好老#1009
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.