Hello! Still working on a fun little fishing game for as3.
I have a question about objects, when I set a variable equal to false in my object via the setRight() method, the boolean value does not remain false after the first function call.
Here is the object “Fish”
var attached:Boolean = false;
var left:Boolean = true;
var speed:int = 2;
function setLeft():void{
this.left = true;
}
function setRight():void{
this.left = false;
this.rotation = 90;
trace("left is: " + left);
}
function moveFish():void{
trace(this.left);
if(this.left){
this.x -= speed;
} else {
trace("what up stud");
this.x += speed;
}
}
stop();
Here is the “driver”
stage.focus = this;
var boatMove:Number = 20;
var moveSpeed:Number = 4.7;
var harpMoving:Boolean = false;
var curScore:int = 0;
var Fish:aFish = new aFish();
Fish.setLeft();
Fish.x = 550;
Fish.y = 250;
stage.addChild(Fish);
stage.addEventListener(KeyboardEvent.KEY_DOWN,boatMover);
stage.addEventListener(KeyboardEvent.KEY_UP, harpMover);
stage.addEventListener(Event.ENTER_FRAME, everyFrame);this.Boat.Harpoon
function boatMover(event:KeyboardEvent):void{
if(event.keyCode == Keyboard.LEFT && Boat.x >= 0 ){
Boat.x -= boatMove;
}
if(event.keyCode == Keyboard.RIGHT && Boat.x <= 450 ){this.Boat.Harpoon
Boat.x += boatMove;
}
if(event.keyCode == Keyboard.DOWN){
harpMoving = true;
if(Boat.Harpoon.height >= 290){
harpMoving = false;
}
}
}
function harpMover(event:KeyboardEvent):void{
harpMoving = false;
}
function everyFrame(event:Event):void{
if(harpMoving){
Boat.Harpoon.height += moveSpeed;
Boat.HarpoonStick.y += moveSpeed;
}
if(!harpMoving && Boat.Harpoon.height >= 1 && Boat.HarpoonStick.y >= 5){
Boat.Harpoon.height -= moveSpeed;
Boat.HarpoonStick.y -= moveSpeed;
if(Boat.HarpoonStick.hitTestObject(Fish.hitBox) && Fish.attached == false){
curScore++;
this.aTextBox.text = curScore.toString();
Fish.gotoAndPlay(2);
Fish.attached = true;
}
if(Fish.attached == true){
Fish.y -= moveSpeed;
}
}
if(Fish.hitTestObject(Boat.theBoat)){
stage.removeChild(Fish);
}
if(!Fish.attached){
Fish.moveFish();
}
}
You can replicate the error by changing these linesof code in the driver:
//original
Fish.setLeft();
Fish.x = 550;
Fish.y = 250;
// change
Fish.setRight();
Fish.x = 0;
Fish.y = 250;
With the change, the fish should move to the right, but the boolean value “left” does not remain to be false, it stays as true.
And here is a link to the.fla
https://bearspace.baylor.edu:443/Dan_Johnson/public/flashFun/goneFishin%27.fla