问题
im trying to do a couple of basic games on flash that consist in random numbers but im receiving this error every time i run my scene:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at capacitacion_fla::MainTimeline/frame1()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at capacitacion_fla::MainTimeline/frame1()
at flash.display::MovieClip/gotoAndStop()
at capacitacion_fla::MainTimeline/fl_ClickToGoToAndStopAtFrame()
I am learning flash and as3 and i will appreciate if someone could help me to know whats going on, i also leave you my as3 code that is all placed on frame 1:
stop();
import com.greensock.*;
import com.greensock.easing.*;
import flash.events.MouseEvent;
import flash.display.MovieClip;
var blitMask1:BlitMask = new BlitMask(strip1,strip1.x,strip1.y,strip1.width,207,true,true,0xffffff,true);
var blitMask2:BlitMask = new BlitMask(strip2,strip2.x,strip2.y,strip2.width,207,true,true,0xffffff,true);
// ------- botones ----------
numerico_btn.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame);
function fl_ClickToGoToAndStopAtFrame(event:MouseEvent):void
{
gotoAndStop(1);
}
preguntas_btn.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame_2);
function fl_ClickToGoToAndStopAtFrame_2(event:MouseEvent):void
{
gotoAndStop(2);
}
imagenes_btn.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame_3);
function fl_ClickToGoToAndStopAtFrame_3(event:MouseEvent):void
{
gotoAndStop(3);
}
//------- Fin de los botones ----------
//------------ Escena 1 ----------------------------------------------------
spin_btn.addEventListener(MouseEvent.CLICK, spin);
function spin(event:MouseEvent):void {
var i:int = 1;
while (i <= 2) {
var newNumber:Number = (randomNumber(0, 19) * 207) + 4968;
TweenMax.to(this["strip" +i], 2 + (i*.5), {y:strip1.y + newNumber});
i++;
}
}
function randomNumber(min:Number, max:Number):Number {
//good
return Math.floor(Math.random() * (1 + max - min) + min);
}
// ----------- fin escena 1 ----------
// ----------- Principio escena 2 -------------------
var blitMask3:BlitMask = new BlitMask( strip1q, strip1q.x, strip1q.y, 392 , strip1q.height, true, true, 0xffff00, true);
preguntas_btn.addEventListener(MouseEvent.CLICK, rodarPreguntas);
function rodarPreguntas(event:MouseEvent):void {
preguntas_btn.visible = false;
var newNumber1:Number = (randomNumber1(0, 50)*392) + 21168 ;
//tween to the relative value of newNumber
TweenMax.to(strip1q, 4, {x:String(-newNumber1), onComplete:showBtn});
}
function showBtn(){
preguntas_btn.visible = true;
}
function randomNumber1(min:Number, max:Number):Number {
//good
return Math.floor(Math.random() * (1 + max - min) + min);
}
// ------- Fin escena 2 --------
I hope someone can help me figuring this out!
回答1:
Error 1009 is telling you that it cannot reference a button, Movie Clip, Text field etc. One easy answer for you would be to make sure your buttons have instance names. I imagine that you are using CS6 or an older version of Flash. In that case select a button, like numerico_btn when you are on the stage. Then go to the properties panel and in the instance input field put the name of numerico_btn.
Do this for all of your buttons. Finally, declare those buttons. For example:
var numerico_btn:SimpleButton;
That should solve your error. Just as an addition, make sure your button is enabled by adding numerico_btn.enabled = true; before your event listener.
Hope that helps you and anyone else who runs into this most common, beginning problems.
来源:https://stackoverflow.com/questions/16027616/as3-flash-error-cannot-access-a-property-or-method-of-a-null-object-reference