I’m kind of new to as3 classes and communicating between them anyway i get an
error:
Error #1009: Cannot access a property or method of a null object reference.
at PlayerShip/scrollWithPlayer()[/Users/Bill/Desktop/Lunar_Madness_Xprmnt 2/PlayerShip.as:158]
for this line of code:
var foregroundHalfWidth:uint = _foreground.width / 2;
but I have a getter to get _foreground from another class that I added it to the stage in. :
public static function get Foreground():Bitmap
{
return _foreground;
}
so I don;t know why it won’t work. If anyone could tell me why it doesn’t work please do. Thanks, here’s all the code:
Here’s the Main class code:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Lunar_Madness extends MovieClip
{
public static var _foreground:Bitmap;
public var _foreground:Bitmap;
public static var _bgTwo:Bitmap;
public var _bgTwo:Bitmap;
public static var _bg:Bitmap
public var _bg:Bitmap;
public var imageBitmapData:BitmapData;
public var imageBitmapData2:BitmapData;
public var imageBitmapData3:BitmapData;
public var imageBitmapData4:BitmapData;
public var _playerShip:PlayerShip;
public static var _gamelevel:Gamelevel;
public function Lunar_Madness()
{
addEventListener(Event.ADDED_TO_STAGE,onAddedToStage);
}
private function onAddedToStage(event:Event):void
{
//Initialize properties
_gamelevel = new Gamelevel;
addChild(_gamelevel);
_playerShip = new PlayerShip();
imageBitmapData = new BG2(864, 287);
_bgTwo = new Bitmap(imageBitmapData);
_bgTwo.x = -26;
_bgTwo.y = 216;
_gamelevel.addChild(_bgTwo);
imageBitmapData = new BG(864, 70);
_bg = new Bitmap(imageBitmapData);
_bg.x = -26;
_bg.y = 286;
_gamelevel.addChild(_bg);
imageBitmapData = new Fg(1437, 376);
_foreground = new Bitmap(imageBitmapData);
_foreground.x = -26;
_foreground.y = 176;
_gamelevel.addChild(_foreground);
addChild(_playerShip);
stage.addEventListener(KeyboardEvent.KEY_DOWN, _playerShip.onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, _playerShip.onKeyUp);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
}
private function onRemovedFromStage(event:Event):void
{
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage)
}
private function onEnterFrame(event:Event):void
{//Directives....
_playerShip.frameEvents();
}
public static function get GameLevel():Object
{
return _gamelevel;
}
/*public static function get Player():Bitmap
{
return _player;
}*/
public static function get Foreground():Bitmap
{
return _foreground;
}
public static function get BackgroundTwo():Bitmap
{
return _bgTwo;
}
public static function get Background():Bitmap
{
return _bg;
}
}
}
and the other class(Most of it):
package {
import flash.display.MovieClip;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.Event;
public class PlayerShip extends MovieClip
{
private const SPEED:Number = .4;
public static var gravity:Number = .025;
private var _vx:Number = 0;
private var _vy:Number = 0;
private var _stageWidth:Number;
private var _stageHeight:Number;
private var _foreground:Object;
private var _bgTwo:Object;
private var _bg:Object;
private var _gamelevel:Object;
public var imageBitmapData:BitmapData;
public static var _player:Bitmap;
public var _player:Bitmap;
private var rightInnerBoundary:uint;
private var leftInnerBoundary:uint;
private var topInnerBoundary:uint;
private var bottomInnerBoundary:uint;
private var reached_end:Boolean = false;
private var reached_left_end:Boolean = false;
private var reached_top:Boolean = false;
private var reached_bottom:Boolean = false;
public function PlayerShip()
{
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(event:Event):void
{
//Initialize properties
_stageWidth= stage.stageWidth;
_stageHeight= stage.stageHeight;
imageBitmapData = new Lander(63, 53);
_player = new Bitmap(imageBitmapData);
_player.x = 26;
_player.y = 16;
_gamelevel.addChild(_player);
rightInnerBoundary = (_stageWidth / 2) + (_stageWidth / 4);
leftInnerBoundary = (_stageWidth / 2) - (_stageWidth / 4);
topInnerBoundary = (_stageHeight / 2) - (_stageHeight / 4);
bottomInnerBoundary = (_stageHeight / 2);
//Add event listenters
addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
}
private function onRemovedFromStage(event:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage)
}
public function onKeyDown(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.LEFT:
_vx -= SPEED *.5;
break;
case Keyboard.RIGHT:
_vx += SPEED * .5;
break;
case Keyboard.UP:
_vy -= SPEED;
break;
case Keyboard.DOWN:
break;
}
}
public function onKeyUp(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT
|| event.keyCode == Keyboard.RIGHT)
{
//_vx = 0;
}
if (event.keyCode == Keyboard.UP
|| event.keyCode == Keyboard.DOWN)
{
//_vy = 0;
}
}
public function frameEvents():void
{//Directives....
scrollWithPlayer();
}
public function scrollWithPlayer()
{
_player.x += _vx;
_player.y += _vy;
_vy += gravity;
trace(_vx);
_gamelevel = Lunar_Madness.GameLevel;
_foreground = Lunar_Madness.Foreground;
_bg = Lunar_Madness.Background;
_bgTwo = Lunar_Madness.BackgroundTwo;
var playerHalfWidth:uint = _player.width / 2;
var playerHalfHeight:uint = _player.height / 2;
var foregroundHalfWidth:uint = _foreground.width / 2;
var foregroundHalfHeight:uint = _foreground.height / 2;
var scrollingX:Boolean = false;
var scrollingY:Boolean = false;
}
THANK YOU:soviet: