Orbytel
05-30-2012, 08:31 AM
Hi all,
I was wondering if someone could assist with an issue I'm having. I'm creating an interactive menu planner, which has a moving list of foods that move along a conveyer belt.
The user can hit a 'stop' button, that will stop the foods on the belt, which makes the food items drag-and-dropable.
Once they have selected the foods they want, they hit the 'go' button, and the foods begin moving along the belt again.
I've implemented it, and having running, but the issue I've run into is that every time I hit the 'go' button the speed of all the items increases ten fold. I've tried using timers, enter frame etc and all result in the same issue.
If someone could let me know where I'm going wrong, or a potential solution, it would be greatly appreciated.
Thank you in advance- and I apologise for the lack of commenting.
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.MovieClip;
back_btn.addEventListener(MouseEvent.CLICK, back);
colorBox.alpha = 1;
eyeColour.alpha = 1;
week_txt.text = "1";
score_txt.text = "0";
dropbox.alpha = 0;
var currentScore:int=0;
var stopFlag:Boolean = false;
go_btn.alpha = 0;
go_btn.enabled = false;
beltRun();
var foodArray:Array = new Array();
var currentArray:int = 0;
var foodProps:Dictionary = new Dictionary(true);
var attributes:Object = new Object();
/* Issue occurs in this function */
function beltRun()
{
addEventListener(Event.ENTER_FRAME, beltTimer);
function beltTimer(event:Event):void
{
if (stopFlag == false)
{
for (var j:int = 0; j < foodArray.length; j++)
{
var logoManip:MovieClip;
logoManip = foodArray[j] as MovieClip;
logoManip.x = (logoManip.x + 3);//this is what is used to move the mc.
trace("Go!");
if (logoManip.x > stage.stageWidth)
{
logoManip.x = 0;
}
}
}
if (stopFlag == true)
{
for (var i:int = 0; i < foodArray.length; i++)
{
trace("Stop!");
foodTrain();
}
}
}
}
stop_btn.addEventListener(MouseEvent.CLICK, stopBelt);
go_btn.addEventListener(MouseEvent.CLICK, stopBelt);
function stopBelt(event:MouseEvent):void
{
if(stopFlag == true)
{
stopFlag = false;
go_btn.alpha = 0;
go_btn.enabled = false;
stop_btn.alpha = 1;
stop_btn.enabled = true;
}
else
{
stopFlag = true;
stop_btn.alpha = 0;
stop_btn.enabled = false;
go_btn.alpha = 1;
go_btn.enabled = true;
}
beltRun();
}
var fastForwardTimer:Timer = new Timer(1100,4);
fastForwardTimer.addEventListener(TimerEvent.TIMER, timer);
fastForwardTimer.start();
function timer(event:TimerEvent):void
{
addFood();
}
function addFood():void
{
var currentFood;
switch(currentArray)
{
case 0:
var appleFood:apple = new apple();
currentFood = appleFood;
attributes.sugar = 5;
attributes.score = 2;
trace("test apple");
break;
case 1:
var juiceFood:juice = new juice();
currentFood = juiceFood;
trace("test juice");
attributes.sugar = 3;
attributes.score = 5;
trace("Sugar level " + attributes.sugar + " Score " + attributes.score)
break;
case 2:
var bagelFood:bagel = new bagel();
currentFood = bagelFood;
attributes.sugar = 5;
attributes.score = 2;
trace("test bagel");
break;
case 3:
var cakeFood:cake = new cake();
currentFood = cakeFood;
attributes.sugar = 5;
attributes.score = 2;
trace("test cake");
default:
trace("None of the above were met");
}
addChild(currentFood);
//Once the child has been added, change the following attributes
currentFood.x += 58;
currentFood.y += 347;
setChildIndex(currentFood, numChildren-1);
foodArray.push(currentFood);
foodProps[currentFood] = attributes;
currentArray++;
}
function foodTrain()
{
for (var i:int = 0; i < foodArray.length; i++)
{
var logoManip:MovieClip;
var startX:Number;
var startY:Number;
logoManip = foodArray[i] as MovieClip;
logoManip.buttonMode = true;
var currentClip:MovieClip;
if (stopFlag == true)
{
logoManip.addEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
function item_onMouseDown(event:MouseEvent):void
{
currentClip = MovieClip(event.currentTarget);
startX = currentClip.x;
startY = currentClip.y;
addChild(currentClip);
currentClip.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
}
function stage_onMouseUp(event:MouseEvent):void
{
if(currentClip.hitTestObject(dropbox))
{
attributes = foodProps[logoManip];
trace(attributes.score);
currentScore = (currentScore + attributes.score);
trace(currentScore);
//a match was made! position the clip on the matching clip:
currentClip.x = dropbox.x;
currentClip.y = dropbox.y;
currentClip.alpha = 0;
//make it not draggable anymore:
currentClip.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
currentClip.buttonMode = false;
}
else
{
currentClip.x = startX;
currentClip.y = startY;
}
currentClip.stopDrag();
}
}
}//end for
score_txt.text = String(currentScore);
}//end function
I was wondering if someone could assist with an issue I'm having. I'm creating an interactive menu planner, which has a moving list of foods that move along a conveyer belt.
The user can hit a 'stop' button, that will stop the foods on the belt, which makes the food items drag-and-dropable.
Once they have selected the foods they want, they hit the 'go' button, and the foods begin moving along the belt again.
I've implemented it, and having running, but the issue I've run into is that every time I hit the 'go' button the speed of all the items increases ten fold. I've tried using timers, enter frame etc and all result in the same issue.
If someone could let me know where I'm going wrong, or a potential solution, it would be greatly appreciated.
Thank you in advance- and I apologise for the lack of commenting.
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.MovieClip;
back_btn.addEventListener(MouseEvent.CLICK, back);
colorBox.alpha = 1;
eyeColour.alpha = 1;
week_txt.text = "1";
score_txt.text = "0";
dropbox.alpha = 0;
var currentScore:int=0;
var stopFlag:Boolean = false;
go_btn.alpha = 0;
go_btn.enabled = false;
beltRun();
var foodArray:Array = new Array();
var currentArray:int = 0;
var foodProps:Dictionary = new Dictionary(true);
var attributes:Object = new Object();
/* Issue occurs in this function */
function beltRun()
{
addEventListener(Event.ENTER_FRAME, beltTimer);
function beltTimer(event:Event):void
{
if (stopFlag == false)
{
for (var j:int = 0; j < foodArray.length; j++)
{
var logoManip:MovieClip;
logoManip = foodArray[j] as MovieClip;
logoManip.x = (logoManip.x + 3);//this is what is used to move the mc.
trace("Go!");
if (logoManip.x > stage.stageWidth)
{
logoManip.x = 0;
}
}
}
if (stopFlag == true)
{
for (var i:int = 0; i < foodArray.length; i++)
{
trace("Stop!");
foodTrain();
}
}
}
}
stop_btn.addEventListener(MouseEvent.CLICK, stopBelt);
go_btn.addEventListener(MouseEvent.CLICK, stopBelt);
function stopBelt(event:MouseEvent):void
{
if(stopFlag == true)
{
stopFlag = false;
go_btn.alpha = 0;
go_btn.enabled = false;
stop_btn.alpha = 1;
stop_btn.enabled = true;
}
else
{
stopFlag = true;
stop_btn.alpha = 0;
stop_btn.enabled = false;
go_btn.alpha = 1;
go_btn.enabled = true;
}
beltRun();
}
var fastForwardTimer:Timer = new Timer(1100,4);
fastForwardTimer.addEventListener(TimerEvent.TIMER, timer);
fastForwardTimer.start();
function timer(event:TimerEvent):void
{
addFood();
}
function addFood():void
{
var currentFood;
switch(currentArray)
{
case 0:
var appleFood:apple = new apple();
currentFood = appleFood;
attributes.sugar = 5;
attributes.score = 2;
trace("test apple");
break;
case 1:
var juiceFood:juice = new juice();
currentFood = juiceFood;
trace("test juice");
attributes.sugar = 3;
attributes.score = 5;
trace("Sugar level " + attributes.sugar + " Score " + attributes.score)
break;
case 2:
var bagelFood:bagel = new bagel();
currentFood = bagelFood;
attributes.sugar = 5;
attributes.score = 2;
trace("test bagel");
break;
case 3:
var cakeFood:cake = new cake();
currentFood = cakeFood;
attributes.sugar = 5;
attributes.score = 2;
trace("test cake");
default:
trace("None of the above were met");
}
addChild(currentFood);
//Once the child has been added, change the following attributes
currentFood.x += 58;
currentFood.y += 347;
setChildIndex(currentFood, numChildren-1);
foodArray.push(currentFood);
foodProps[currentFood] = attributes;
currentArray++;
}
function foodTrain()
{
for (var i:int = 0; i < foodArray.length; i++)
{
var logoManip:MovieClip;
var startX:Number;
var startY:Number;
logoManip = foodArray[i] as MovieClip;
logoManip.buttonMode = true;
var currentClip:MovieClip;
if (stopFlag == true)
{
logoManip.addEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
function item_onMouseDown(event:MouseEvent):void
{
currentClip = MovieClip(event.currentTarget);
startX = currentClip.x;
startY = currentClip.y;
addChild(currentClip);
currentClip.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
}
function stage_onMouseUp(event:MouseEvent):void
{
if(currentClip.hitTestObject(dropbox))
{
attributes = foodProps[logoManip];
trace(attributes.score);
currentScore = (currentScore + attributes.score);
trace(currentScore);
//a match was made! position the clip on the matching clip:
currentClip.x = dropbox.x;
currentClip.y = dropbox.y;
currentClip.alpha = 0;
//make it not draggable anymore:
currentClip.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
currentClip.buttonMode = false;
}
else
{
currentClip.x = startX;
currentClip.y = startY;
}
currentClip.stopDrag();
}
}
}//end for
score_txt.text = String(currentScore);
}//end function