Hi Leute,
ich übe mich gerade in AS3 und probiere ein Snake Spiel zu coden...
Das Problem ist, dass ich einen Fehler ausgespuckt bekomme wenn ich versuche
die Bitmaps in einen Array zu packen.
Zitat von Fehler
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.
at cp/addFood()[C:\Dokumente und Einstellungen\standard\Desktop\rolf\AS3\cp\cp.as:90]
at <anonymous>()[C:\Dokumente und Einstellungen\standard\Desktop\rolf\AS3\cp\cp.as:52]
Hier ist mein programmiertes mit einem Kommentar bei der Fehlerzeile:
Code
package {
import flash.display.*;
import flash.events.*;
import flash.geom.Rectangle;
import flash.text.*;
import flash.utils.setInterval;
/*
13 = Enter
27 = Escape
37 = Links
38 = Oben
39 = Rechts
40 = Unten
[N]ie
|
|
[W]aschen-----|-------[O]hne
|
|
[S]eife
*/
[SWF(width="400", height="350", backgroundColor="#000000", frameRate="30")]
public class cp extends Sprite
{
public var snakeBit:Bitmap;
public var snakeBitData:BitmapData;
public var snakeDirection:String = "O";
public var gameSpeed:Number = 100;
public var gameAddedFood:Array;
public var gameWidth:Number = 400;
public var gameHeight:Number = 350;
public function cp()
{
snakeBitData = new BitmapData(10,10,false,0xFF00FF00);
snakeBitData.fillRect(new Rectangle(10,10,10,10),0xFF00FF00);
snakeBit = new Bitmap(snakeBitData);
snakeBit.y = 50;
addChild(snakeBit);
stage.addEventListener(KeyboardEvent.KEY_DOWN,function(e:KeyboardEvent):void
{
trace(e.keyCode);
switch(e.keyCode)
{
case 13:
startGame();
break;
case 27:
addFood();
break;
case 37:
snakeDirection = "W";
break;
case 38:
snakeDirection = "N";
break;
case 39:
snakeDirection = "O";
break;
case 40:
snakeDirection = "S";
break;
}
});
}
public function startGame():void
{
setInterval(IntervalTodoList,gameSpeed);
}
public function addFood():void
{
var randomX:Number;
var randomY:Number;
randomX = Math.floor(Math.random() * (gameWidth-10));
randomY = Math.floor(Math.random() * (gameHeight-10));
trace(randomX + " - " + randomY);
var newFoodBitData:BitmapData = new BitmapData(10,10,false,0xFF00FF00);
newFoodBitData.fillRect(new Rectangle(10,10,10,10),0xFF00FF00);
gameAddedFood.push(new Bitmap(newFoodBitData)); // Diese Zeile wird makiert(Fehlerzeile)
this.addChild(gameAddedFood[0]);
}
public function IntervalTodoList():void
{
if(snakeBit.x > gameWidth) snakeBit.x = 0;
if(snakeBit.x < 0) snakeBit.x = 400;
if(snakeBit.y > gameHeight) snakeBit.y = 0;
if(snakeBit.y < 0) snakeBit.y = 350;
switch(snakeDirection)
{
case "N":
snakeBit.y -= 10;
break;
case "O":
snakeBit.x += 10;
break;
case "S":
snakeBit.y += 10;
break;
case "W":
snakeBit.x -= 10;
break;
}
}
}
}
Alles anzeigen
Schonmal vielen Dank!
Gruß crAzywuLf