2012-02-16 4 views
-1

私のフラッシュコードに問題があります。私は単純なボールドロップゲームを作っていますが、このエラーが続きますタイプエラー1009に関する問題Nullオブジェクト参照gameLoop()

TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。 balldrop_fla :: MainTimeline/gameLoop()balldrop_fla.MainTimeline ::フレーム1: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のリスナーは、おそらくあなたはmakeBallでボールをinstatiate前に呼び出されていることです()。私はmakeBallの後にENTER_FRAMEのリスナーを追加します。

0

は、スクリプトの最後で

stop(); 

を追加しようとしなければなりません。タイムラインが終了し、最初から再生を開始すると、フラッシュはシーンのすべてのオブジェクトを再作成し、あなたのボールはnullになります。

そして、あなたは確認してください後

randBall = Math.floor(Math.random()* 5)。

randBallは、たとえば、代わりに0.000000001?ここでのより良い方法は、Numberの代わりにrandBallの型intを作ることです。

関連する問題