# The strange output

**URL:** <https://forum.kirupa.com/t/the-strange-output/302728>\
**Category:** flash\
**Created:** [January 6, 2010, 4:24pm UTC](https://forum.kirupa.com/t/the-strange-output/302728 "2010-01-06T16:24:26Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![kustrle](https://avatars.discourse-cdn.com/v4/letter/k/8e7dd6/32.png) [@kustrle](https://forum.kirupa.com/u/kustrle)\
**Post date:** [January 6, 2010, 4:24pm UTC](https://forum.kirupa.com/t/the-strange-output/302728/1 "2010-01-06T16:24:26Z")

</div>

I recently decided to learn Action Script 3, so I tryed to make my own game… Well, I am posting code of my game below (just a part of important code for that case).  
So the DocumentClass.as calls Ball.as (the ball can be controled by keyboard, but I didnt put that part of code here) and PadScreen.as. The PadScreen is also a movie clip (linked with PadScreen.as) which contains few Down movie clips. And I wanted that if Ball movie clip and Down movie clip are colliding the Down movie clip should move a little (and that needs to be done in Down.as file, which dont know ball variable). So the document class should give a ball variable to PadScreen and PadScreen should give it to each Down movie clip inside it for what i used simple loop. The problem is that when I run the game I get output like this:

```auto
TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at PadScreen()
	at DocumentClass()
**TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at Down/onPadTick()
	at flash.utils::Timer/_timerDispatch()
	at flash.utils::Timer/tick()**

```

The bold code pops up every time timer execute the following code, but non-bold pops just once at start…

```auto
public function onPadTick(timerEvent:TimerEvent):void {
			if (ball.hitTestObject(this)) {
				this.y = this.y + 1;
			}

```

And if I change it like so:

```auto
	public function onPadTick(timerEvent:TimerEvent):void {
			if (this.hitTestObject(this)) {
				this.y = this.y + 1;
			}

```

The Output panel stops poping the bold message out… So the “null object reference” in second output paragraph is most likely ball… I have also searched internet and found many of people getting output like this, but for every case the solution seems to be diferent

Below are my .as files

DocumentClass.as

```auto
package {
	import flash.display.MovieClip;
	public class DocumentClass extends MovieClip {
		public var ball:Ball;
		public var padScreen:PadScreen
		public function DocumentClass() {
			ball = new Ball ;
			addChild(ball);
			padScreen = new PadScreen(ball);
			addChild(padScreen);
		}
	}
}

```

PadScreen.as

```auto
package {
	import flash.display.MovieClip;
	public class PadScreen extends MovieClip {
		public var ball:Ball;
		public var down:Down;
		public function PadScreen(ball:Ball) {
			this.ball = ball;
			//Loop through children and pass reference to ball:
			for (var i:int = 0; i < numChildren; i++) {
				(getChildAt(i) as Down).ball = ball;
			}
		}
	}
}

```

Ball.as

```auto
package {
	import flash.display.MovieClip;
	public class Ball extends MovieClip {
		public function Ball() { // the ball is otherwise controlled by keyboard
			x=100
			y=100
		}
	}
}

```

Down.as

```auto
package {
	import flash.display.MovieClip;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	public class Down extends MovieClip {
		public var padTimer:Timer;
		public var ball:Ball;
		public function Down() {
			padTimer = new Timer(10);
			padTimer.addEventListener(TimerEvent.TIMER,onPadTick);
			padTimer.start();
		}
		public function onPadTick(timerEvent:TimerEvent):void {
			if (ball.hitTestObject(this)) {
				this.y = this.y + 1;
			}
		}
	}
}

```

Thanks for any help
