2012-02-16 76 views
-1

我的闪存代码有问题。我正在做一个简单的球掉落游戏,我不断收到此错误问题与类型错误1009空对象引用gameLoop()

TypeError:错误#1009:无法访问空对象引用的属性或方法。在balldrop_fla :: MainTimeline/gameLoop()[balldrop_fla.MainTimeline :: frame1:46]

它似乎在谈论第46行,即“ball.y + = 5;”

这里是我的代码:

import flash.display.DisplayObject; 
import flash.geom.Rectangle; 
import flash.events.Event; 
import flash.display.MovieClip; 


var points:Array = new Array(10,20,30,40,-50) 
var ball:DisplayObject; 
var randBall:Number; 
var score:Number=0; 
var rect:Rectangle=new Rectangle(0+(basket_mc.width/2), basket_mc.y,stage.stageWidth- basket_mc.width, 0); 
basket_mc.startDrag(true, rect); 

basket_mc.addEventListener(Event.ENTER_FRAME, gameLoop); 

function makeBall():void 
{ 
randBall=Math.floor(Math.random()*5); 

switch(randBall) 
{ 
    case 0: 
     ball=addChild(new ball0_mc()); 
    break; 
    case 1: 
     ball=addChild(new ball1_mc()); 
    break; 
    case 2: 
     ball=addChild(new ball2_mc()); 
    break; 
    case 3: 
     ball=addChild(new ball3_mc()); 
    break; 
    case 4: 
     ball=addChild(new ball4_mc()); 
    break; 
} 
ball.x=Math.floor(Math.random()*stage.stageWidth-ball.width); 
ball.y=-60; 
} 

function gameLoop(evt:Event):void 
{ 
score_txt.text=score.toString(); 
ball.y += 5; 

if(ball.y>stage.stageHeight + ball.height) 
{ 
    removeChild(ball); 
    makeBall(); 
} 
if(ball.hitTestObject(basket_mc)) 
{ 
    score += points[randBall]; 
    removeChild(ball); 
    makeBall(); 
} 
} 

makeBall(); 

回答

1

嗯,我首先看到的是ENTER_FRAME的侦听器可能叫你instatiate与makeBall球前()。我会在makeBall后添加ENTER_FRAME的监听器。

0

你必须设法在脚本的末尾添加

stop(); 

。然后时间轴结束并从头开始播放,flash在场景中重新创建所有对象,并且球变为空。

那你肯定后

randBall = Math.floor(的Math.random()* 5);

randBall将以0为例代替0.000000001?这里更好的方法是让randBall的类型int而不是Number。

相关问题