【发布时间】:2015-02-22 17:23:17
【问题描述】:
所有迟到的人,这个问题仍然有效,尚未得到答案,您可能会在下面看到一个不相关的语法错误,一位好成员为我找到了
错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Player()
at Maintest_fla::MainTimeline/createPlayer()
当我尝试添加实例名称为 world 的对象中的实例名称 wall0x 对象时,我发现我收到了一个空对象错误。 也忽略一长串不相关的变量。
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.filters.BlurFilter;
import flash.utils.Timer;
public class Player extends MovieClip
{
// player settings
private var _rotateSpeedMax:Number = 20;
public var _gravity:Number = .10;
// projectile gun settings
public var _bulletSpeed:Number = 4;
public var _maxDistance:Number = 200;
public var _reloadSpeed:Number = 250;//milliseconds
public var _barrelLength:Number = 20;
public var _bulletSpread:Number = 5;
// gun stuff
private var _isLoaded:Boolean = true;
private var _isFiring:Boolean = false;
private var _endX:Number;
private var _endY:Number;
private var _startX:Number;
private var _startY:Number;
private var _reloadTimer:Timer;
private var _bullets:Array = [];
// array that holds walls
public var _solidObjects:Array = [];
//
private var _player:MovieClip;
private var _dx:Number;
private var _dy:Number;
private var _pcos:Number;
private var _psin:Number;
public var _trueRotation:Number;
public function Player()
{
// constructor code //Right hereVVVthe instance name is wall0x and it's in the object world on the stage.
_solidObjects = [MovieClip(root).world.wall01,MovieClip(root).world.wall02,MovieClip(root).world.wall03,MovieClip(root).world.wall04];
/*addEventListener(Event.ENTER_FRAME, enterFrameHandler);
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);*/
}
}
}
我在第 2 帧中使用的代码创建播放器,然后不断将其和弦设置为另一个对象。
stage.addEventListener(Event.ENTER_FRAME, createPlayer);
function createPlayer(e:Event):void
{
// attach player movieclip from library
// position player in center
if (character!=null&&_player!=null)
{
_player.x = character.x + 5;
_player.y = character.y + 5;
}
else if (_player ==null && world.wall01 != null)
{
var _player:Player;
_player = new Player();
// add to display list
stage.addChild(_player);
}
}
【问题讨论】:
-
何时调用 Player 构造函数?它是在第 2 帧中调用的吗?如果您的变量在第 2 帧上,那么我认为您必须在第 2 帧中创建 Player 对象...
-
是的,我正在第 2 帧中创建一个播放器对象。不过,当我将对象添加到这样的列表时,它给了我一个语法错误。
-
那么,在你的主时间线的 frame2 上,
world存在吗? (以及所有的墙壁?)还是只存在于第 1 帧? -
它只存在于第 2 帧,即我在其中创建播放器的帧
-
即使我这样运行它也会抛出空对象引用错误
else if (_player ==null && world.wall01 != null) { var _player:Player; _player = new Player(); // add to display list stage.addChild(_player); }
标签: actionscript-3 flash actionscript flash-cs6