package{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import fl.motion.easing.Quintic;
import flash.display.Stage;
import flash.ui.Keyboard;
public class Script extends MovieClip{
private const gravity:int = 1;
private const max_speed:int = 8;
private const walkspeed:int = 4;
private const jumpspeed:int = 20;
private const start_x:int = 50;
private const start_y:int = 50;
private var y_speed:int;
private var x_speed:int;
private var left:Boolean;
private var up:Boolean;
private var right:Boolean;
private var space:Boolean;
private var can_jump:Boolean;
private var level:Array = new Array();
private var tiles:Array = new Array();
private var studpoengs:Array = new Array();
private var teller_studpoeng:int = 0;
var mv_stilling = new Studpoengteller;
private var Map_data:Data = new Data; // opprett Data objektet med brett oppbygging
private var Hero:hero = new hero;
public function Script(){ // constructor
BuildMap();
create_hero();
addEventListener(Event.ENTER_FRAME, main);
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
stage.addEventListener(KeyboardEvent.KEY_UP, key_up);
}
private function main(event:Event){
update_hero();
}
private function key_down(event:KeyboardEvent){
if(event.keyCode == 37){
left = true;
}
if(event.keyCode == 38){
up = true;
}
if(event.keyCode == 39){
right = true;
}
}
private function key_up(event:KeyboardEvent){
if(event.keyCode == 37){
left = false;
}
if(event.keyCode == 38){
up = false;
}
if(event.keyCode == 39){
right = false;
}
}
/*
Hovedspiller funskjonalitet
*/
private function create_hero(){
addChild(Hero);
Hero.x = start_x;
Hero.y = start_y;
}
private function update_hero(){
y_speed += gravity;
if(left){
x_speed -= walkspeed;
}
if(right){
x_speed += walkspeed;
}
if(up && can_jump){
y_speed -= jumpspeed;
can_jump = false;
}
if(y_speed > max_speed){
y_speed = max_speed;
}
Hero.y += y_speed;
Hero.x += x_speed;
for(var t:int; t < tiles.length; t++){
while(tiles[t].hitTestPoint(Hero.x,Hero.y + 10,true)){
Hero.y -= 1;
if(y_speed >= 0){
can_jump = true;
}
}
while(tiles[t].hitTestPoint(Hero.x,Hero.y - 10,true)){
Hero.y += 1;
y_speed = 0;
}
while(tiles[t].hitTestPoint(Hero.x + 5,Hero.y,true)){
Hero.x -= 1;
}
while(tiles[t].hitTestPoint(Hero.x - 5,Hero.y,true)){
Hero.x += 1;
}
}
x_speed = 0;
for(var s:int; s < studpoengs.length; s++) {
while(studpoengs[s].hitTestPoint(Hero.x, Hero.y, true)) {
removeChild(studpoengs[s]);
mv_stilling.updatePoeng(++teller_studpoeng);
//addChild(mv_quiz);
//mv_quiz.gotoAndStop(1);
//mv_quiz.x = 50;
//mv_quiz.y = 50;
}
}
}
/*
Brettet
*/
private function BuildMap(){
Map_data.Setup();
level = Map_data.level1; // hent array med brett info
for(var t = 0; t < level.length; t++){
for(var u = 0; u < level[t].length; u++){
if(level[t][u] == 1){
var new_tile:platform_tile = new platform_tile; //legg til en "murstein"
addChild(new_tile); //vis på skjermen
new_tile.gotoAndStop(1);
new_tile.x = u * 24;
new_tile.y = t * 24;
tiles.push(new_tile); //legg alt i en array
}
else if(level[t][u] == 2){
var new_studpoeng:studpoeng = new studpoeng;
addChild(new_studpoeng);
new_studpoeng.gotoAndStop(1);
new_studpoeng.x = u * 25;
new_studpoeng.y = t * 25;
studpoengs.push(new_studpoeng);
}
}
}
this.addTeller();
}
private function addTeller():void {
addChild(mv_stilling);
mv_stilling.gotoAndStop(1);
mv_stilling.x = 10;
mv_stilling.y = 7;
}
}
}
Error I’m receiving:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Script()
from debugger:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Script()[Script.as:41]
Line 41 in Script.as is:
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
I wasted so many hours now looking for a solution, but with no luck, so maybe someone here can help me.