我是AS3的新手。我多次搜索我的错误,但没有找到答案。
首先,这是我的代码:
this.stage.scaleMode = StageScaleMode.EXACT_FIT;
this.stage.align = StageAlign.TOP_LEFT;
stop();
stage.addEventListener(Event.ENTER_FRAME , movecity);
stage.addEventListener(Event.ENTER_FRAME , timerfunc);
stage.addEventListener(Event.ENTER_FRAME , burgerfall);
var g:Number = 0 ;
var now:Number = 5;
var chips_no:int = 0 ;
var burger_no:int = 0;
function movecity(event:Event):void {
city.x = city.x - 3 ;
if(city.x <= -498 ){
city.x = 993;
}
}
function ontouch(event:MouseEvent , my:MovieClip){
my.y = (140 + (400 - 140) * Math.random())* (-1);
my.x = (60 + (400 - 60) * Math.random());
g=10;
if(my.name=="chips"){
chips_no +=1;
}
if(my.name=="burger"){
burger_no +=1;
}
if(my.name=="burger2"){
burger_no +=1;
}
}
function burgerfall(event:Event){
if(burger_no==1 && chips_no==1){
return stage.removeEventListener(Event.ENTER_FRAME, burgerfall),
stage.removeEventListener(Event.ENTER_FRAME, movecity),
stage.removeEventListener(Event.ENTER_FRAME, timerfunc),
gotoAndPlay(215);
}
g = g + 14;
burger.rotation += 20 ;
burger2.rotation += 25;
chips.rotation +=15;
burger.y = burger.y + g;
burger2.y = burger2.y + g;
chips.y = chips.y + g;
/////////////////// chips relocate
if(chips.y >=1730){
chips.y = -500 ;
g = 0.3 ;
if(chips.x <=240){
chips.x += Math.random()*400 ;
}else{
chips.x -= Math.random()*400 ;
}
}
// ///////////////// burger relocate
if(burger.y >= 1130){
burger.y = -109 ;
g = 0.3 ;
if(burger.x <=240){
burger.x += Math.random()*400 ;
}else{
burger.x -= Math.random()*400 ;
}
}
// ///////////////////// burger 2 relocate
if(burger2.y <= 1250){
burger2.y = -365 ;
g=0.3;
if(burger2.x <=240){
burger2.x += Math.random()*400 ;
}else{
burger2.x -= Math.random()*400 ;
}
}
}
function timerfunc(event:Event):void {
timer_text.text = String(int(now));
now-=0.05;
if(now <= 0){
stage.removeEventListener(Event.ENTER_FRAME , movecity);
stage.removeEventListener(Event.ENTER_FRAME , timerfunc);
stage.removeEventListener(Event.ENTER_FRAME , burgerfall);
gotoAndPlay(215);
}
}
burger2.addEventListener(MouseEvent.CLICK , function(me:MouseEvent):void {
ontouch(me, burger2)
});
burger.addEventListener(MouseEvent.CLICK , function(me:MouseEvent):void {
ontouch(me, burger)
});
chips.addEventListener(MouseEvent.CLICK , function(me:MouseEvent):void {
ontouch(me, chips)
});
===========================================
我的游戏是点击食物。如果您收集1个汉堡和1个筹码,则移动到:完成水平的框架。如果计时器计数到0,将显示游戏框架。
奇怪的问题是关于舞台声明。如果我以这种方式重新排序语句:
stage.addEventListener(Event.ENTER_FRAME , movecity);
stage.addEventListener(Event.ENTER_FRAME , timerfunc);
stage.addEventListener(Event.ENTER_FRAME , burgerfall);
然后你收集汉堡和水平完整的框架显示。如果时间到零,则显示关于burgerfall()方法的错误1009 !!
如果我以这种方式重新排序语句:
stage.addEventListener(Event.ENTER_FRAME , movecity);
stage.addEventListener(Event.ENTER_FRAME , burgerfall);
stage.addEventListener(Event.ENTER_FRAME , timerfunc);
然后你收集汉堡,显示有关timerfunc()方法的错误1009!如果时间到零,则显示超时帧没有任何错误!
希望能理解这个问题。
答案 0 :(得分:1)
有很多人发布了关于Null Object Reference Error的问题,我决定将链接粘贴到这里的教程。
在绝大多数情况下很容易找到错误的确切原因。您应该尝试找到确切的代码行和至少为null的确切引用(即使您不理解为什么会发生这种情况)。然后,想要帮助你的人将花更少的时间猜测))
编辑:
至于你的代码......我认为没有特别需要在每个Enter_Frame事件上调用3种不同的方法。这是相同的游戏循环。