I'm new to AS3. I searched for my error many times, but have not found an answer.
First, here is my code:
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)
});
===========================================
My game is to click on food. If you collect 1 burger and 1 chips you move to : level completed frame. If the timer counts to 0, the game over frame will shown.
The strange problem is about the stage statements. If I re-order the statements this way:
stage.addEventListener(Event.ENTER_FRAME , movecity);
stage.addEventListener(Event.ENTER_FRAME , timerfunc);
stage.addEventListener(Event.ENTER_FRAME , burgerfall);
Then you collect burgers and level complete frame is shown. If the time reaches zero the error 1009 shown about burgerfall() method !!
If I re-order the statements to this way :
stage.addEventListener(Event.ENTER_FRAME , movecity);
stage.addEventListener(Event.ENTER_FRAME , burgerfall);
stage.addEventListener(Event.ENTER_FRAME , timerfunc);
Then you collect burgers, the error 1009 shown about timerfunc() method! If the time reaches zero, the time out frame is shown without any errors!
Hopefully, will understand the issue.