I am not sure if a class would be the best option but I am using the following code to create a random walking player by using a class that contains it's function. (Soon I will need the class to do hit tests as well).
When I run this code I get lots of lag.
class
Actionscript Code:
class Person {
private var h:Number;
private var g:Number;
private var j:Number;
private var h2:Number;
private var g2:Number;
private var j2:Number;
private var h3:Number;
private var g3:Number;
private var j3:Number;
private var h4:Number;
private var g4:Number;
private var j4:Number;
private var i:Number;
private var e:Number;
private var x2:Number;
private var x3:Number;
private var y2:Number;
private var y3:Number;
private var ran0:Number;
private var ran1:Number;
private var ran2:Number;
private var ran3:Number;
private var ran4:Number;
private var ran5:Number;
private var ran6:Number;
private var dontrun:Boolean;
private var npcx:Number;
private var npcy:Number;
private var npcgtas:Number;
private var npcdocon:Boolean;
private var npcdofcon:Boolean;
private var objectMaxfdcon:Number;
private var npcupcon:Boolean;
private var npcupfcon:Boolean;
private var objectMaxfucon:Number;
private var npcricon:Boolean;
private var npcrifcon:Boolean;
private var objectMaxfrcon:Number;
private var npclecon:Boolean;
private var npclefcon:Boolean;
private var objectMaxflcon:Number;
private var pausemovenpc:Boolean;
private var ires:Number;
private var ires2:Number;
private var ires3:Number;
private var ires4:Number;
private var dontrunrandisrdir:Boolean;
private var npcdr:Boolean;
private var initia:Boolean;
function Person(dontruni:Boolean, npcxi:Number, npcyi:Number, npcgtasi:Number, objectMaxfdconi:Number, objectMaxfuconi:Number, objectMaxfrconi:Number, objectMaxflconi:Number, pausemovenpcl:Boolean) {
trace("initiate defults");
dontrun = dontruni;
npcx = npcxi;
npcy = npcyi;
npcgtas = npcgtasi;
objectMaxfdcon = objectMaxfdconi;
objectMaxfucon = objectMaxfuconi;
objectMaxfrcon = objectMaxfrconi;
objectMaxflcon = objectMaxflconi;
pausemovenpc = pausemovenpcl;
h = 0;
g = 0;
j = 0;
h2 = 0;
g2 = 0;
j2 = 0;
h3 = 0;
g3 = 0;
j3 = 0;
h4 = 0;
g4 = 0;
j4 = 0;
i = 0;
e = 0;
x2 = 0;
x3 = 0;
y2 = 0;
y3 = 0;
ran0 = 0;
ran1 = 0;
ran2 = 0;
ran3 = Math.floor(Math.random()*1);
ran4 = 0;
ran5 = 0;
ires = 0;
ires2 = 0;
ires3 = 0;
ires4 = 0;
}
function npcMove(dontruni:Boolean, npcxi:Number, npcyi:Number, npcgtasi:Number, pausemovenpcl:Boolean, npcdrl:Boolean, npcupconl:Boolean, npcriconl:Boolean, npcdoconl:Boolean, npcleconl:Boolean, initial:Boolean):Array {
initia = initial;
npcupcon = npcupconl;
npcricon = npcriconl;
npcdocon = npcdoconl;
npclecon = npcleconl;
trace("npcMove");
trace(npcx);
trace(npcy);
trace("trace:"+initia);
npcx = npcxi;
npcy = npcyi;
npcgtas = npcgtasi;
dontrun = dontruni;
pausemovenpc = pausemovenpcl;
npcdr = npcdrl;
if (initia == true) {
if (npcdr != true) {
ran1 = Math.floor(Math.random()*4);
ran2 = Math.floor(Math.random()*100);
ran5 = Math.floor(Math.random()*24);
ran2 += 15;
ran5 += 6;
ran0 = Math.floor(Math.random()*25);
x2 = npcx-ran2;
y2 = npcy-ran2;
x3 = npcx+ran2;
y3 = npcy+ran2;
dontrun = true;
npcdr = true;
e = 0;
}
if (ran1 == 0) {
if (npcy<=y2) {
dontrun = false;
npcgtas = 1;
} else {
if (npcupcon != false) {
npcgtas = 5;
npcy = (npcy -= 1);
} else if (npcupcon == false) {
y2 = npcy;
}
}
}
if (ran1 == 1) {
if (npcx>=x3) {
dontrun = false;
npcgtas = 2;
} else {
if (npcricon != false) {
npcgtas = 6;
npcy = (npcx -= 1);
} else if (npcricon == false) {
x3 = npcx;
}
}
}
if (ran1 == 2) {
if (npcy>=y3) {
dontrun = false;
npcgtas = 3;
} else {
if (npcdocon != false) {
npcgtas = 7;
npcy = (npcy += 1);
} else if (npcdocon == false) {
y3 = npcy;
}
}
}
if (ran1 == 3) {
if (npcx<=x2) {
dontrun = false;
npcgtas = 4;
} else {
if (npclecon != false) {
npcgtas = 8;
npcx = (npcx -= 1);
} else if (npclecon == false) {
x2 = npcx;
}
}
}
/*3*/
if (ran1<4) {
if (dontrun == false) {
ran1 = -1;
if (e == ran5) {
npcdr = false;
}
e++;
}
}
//Updates player positions.
trace("Return: "+npcx);
return [dontrun, npcx, npcy, npcgtas, pausemovenpc, npcdr];
}
}
}
main frame
Actionscript Code:
var npc001prop = new Array();
var npc001prop2 = new Array();
var initia:Boolean;
npc001prop[0] = false;
npc001prop[1] = npc001._x;
npc001prop[2] = npc001._y;
npc001prop[3] = 0;
npc001prop[4] = false;
npc001prop[5] = false;
npc001prop[6] = false;
npc001prop[7] = false;
npc001prop[8] = false;
npc001prop[9] = false;
npc001prop2[0] = false;
npc001prop2[1] = 1;
npc001prop2[2] = 1;
npc001prop2[3] = 1;
npc001prop2[4] = 1;
import Person;
var npc001controler = new Person(npc001prop[0], npc001prop[1], npc001prop[2], npc001prop[3], npc001prop2[0], npc001prop2[1], npc001prop2[2], npc001prop2[3], false);
initia = false;
var r:Object = npc001controler.npcMove(dontrun, npcx, npcy, npcgtas, pausemovenpc, npcdr, initia);
initia = true;
npc001.onEnterFrame = function() {
npc001prop = npc001controler.npcMove(npc001prop[0], npc001prop[1], npc001prop[2], npc001prop[3], npc001prop[4], npc001prop[5], npc001prop[6], npc001prop[7], npc001prop[8], npc001prop[9], initia);
this._x = npc001prop[1];
this._y = npc001prop[2];
this.gotoAndStop(npc001prop[3]);
trace("Don't Run = "+npc001prop[0]);
trace("\nNpc._x = "+npc001prop[1]);
trace("\nNpc._y = "+npc001prop[2]);
trace("\ngotoAndStop = "+npc001prop[3]);
trace("\nPause Npc Movement = "+npc001prop[4]);
trace("\nStart a New Direction = "+npc001prop[5]);
};
any suggests to achieve the same effect but with a performance boost!