PDA

Volledige versie bekijken : buttons werken niet goed


maikel371
%Europe/Berlin %630 %2009, 16:07
ik heb een module voor een rijschool met verschillende pakketten en prijzen.
nu is de bedoeling dat als je op een knop duwt het pakket veranderd.
hij rekend goed en de tween doet het allemaal maar alleen het pakket veranderd niet
, de tekst kom uit een txt file.

zie bijlage
import mx.transitions.Tween;
var prijzen:Array = [];
var kortingen:Array = [2, 2.5, 3, 3.5];
var lessen:Array = [];
var variabeleprijs:Array = [];
var pakketten = [];
var pakket = [];
var totaalprijs:Array = [];
//Loadvar
var prijzenLader:LoadVars = new LoadVars();
prijzenLader.load("prijzen.txt");
prijzenLader.onLoad = function(success) {
if (success) {
//geladen
initPrijsArray(variabeleprijs,4,"prijspakket");
initPrijsArray(lessen,4,"lessen");
initPrijsArray(prijzen,5,"prijsoptie");
initPrijsArray(pakketten,20,"pakket");
init();
} else {
//fout
trace("fout bij laden tekst bestand");
}
};
//array function
function initPrijsArray(arrayName, lengteArray, string) {
var __reg1 = 1;
for (; ; ) {
if (__reg1>lengteArray) {
return;
}
arrayName[__reg1-1] = Number(prijzenLader[string+__reg1]);
++__reg1;
}
}
function init() {
var aantalkolommen:Number = 8;
var aantalrijen:Number = 4;
var totaalprijs:Array = variabeleprijs;
var pakket = pakketten;
var korting:Boolean = false;

function verhoogPrijs(totaal:Number, prijs:Number) {
totaal += prijs;
return totaal;
}
function kortingPrijs(totaal:Number, korting:Number) {
var prijsmetkorting:Number;
prijsmetkorting = (totaal/100)*korting;
return prijsmetkorting;
}
for (var i = 0; i<aantalrijen; i++) {
initPrijsArray(prijzen,5,"prijsoptie");
var les:Number = lessen[i];
var prijs:Number = variabeleprijs[i];
prijzen.unshift(prijs);
prijzen.unshift(les);

totaalprijs[i] = verhoogPrijs(totaalprijs[i], prijzen[2]);
for (var n = 0; n<aantalkolommen; n++) { // buttons alpha + prijs
if (n == 0) {
this["rij"+i+"_mc"]["txtInhoud"+n].text = prijzen[n];
} else if (n == 1) {
this["rij"+i+"_mc"]["txtInhoud"+n].text = "€"+prijzen[n]+",-";
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].prijs = prijzen[n];
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].i = i;
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"]._alpha = 50;
} else if (n == 7) {

this["rij"+i+"_mc"]["txtInhoud"+n].text = kortingen[i]+"% korting";
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].korting = kortingen[i];
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].i = i;
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"]._alpha = 50;
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].activated = false;
} else {

this["rij"+i+"_mc"]["txtInhoud"+n].text = "€ "+prijzen[n]+" ,-";
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].prijs = prijzen[n];
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].i = i;
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"]._alpha = 50;
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].activated = false;
if (i == 0) {
z = __reg4-2;
this["rij"+i+"_mc"]["optie"+(__reg4-3)+"_mc"].pakket = "Pakket "+pakket[z];
this["rij"+i+"_mc"].txtPakketnaam.text = "Pakket "+pakket[0];
} else {
if (i == 1) {
q = __reg4+3;
this["rij"+i+"_mc"]["optie"+(__reg4-3)+"_mc"].pakket = "Pakket "+pakket[q];
this["rij"+i+"_mc"].txtPakketnaam.text = "Pakket "+pakket[5];
} else {
if (i == 2) {
w = __reg4+8;
this["rij"+i+"_mc"]["optie"+(__reg4-3)+"_mc"].pakket = "Pakket "+pakket[w];
this["rij"+i+"_mc"].txtPakketnaam.text = "Pakket "+pakket[10];
} else {
if (i == 3) {
e = __reg4+13;
this["rij"+i+"_mc"]["optie"+(__reg4-3)+"_mc"].pakket = "Pakket "+pakket[e];
this["rij"+i+"_mc"].txtPakketnaam.text = "Pakket "+pakket[15];
}
}
}
}
}
this["rij"+i+"_mc"]["optie"+(n-3)+"_mc"].onRelease = function() {
var array:Array = String(this).split(".");
if (this._alpha == 100 && array[2] != "optie4_mc") {
new Tween(this, "_alpha", none, this._alpha, 50, 0.3, true);
totaalprijs[this.i] -= this.prijs;

if ((__reg0 = this.pakket) === "Pakket 2")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 3")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 4")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 5")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 7")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 8")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 9")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 10")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 12")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 13")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 14")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 15")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 17")
{
pakket[this.i] = "Pakket 4";
}
else
{
if (__reg0 === "Pakket 18")
{
pakket[this.i] = "Pakket 4";
}
else
{
if (__reg0 === "Pakket 19")
{
pakket[this.i] = "Pakket 4";
}
else
{
if (__reg0 === "Pakket 20")
{
pakket[this.i] = "Pakket 4";
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
this.activated = false;

} else if (this._alpha<=50 && array[2] != "optie4_mc") {
new Tween(this, "_alpha", none, this._alpha, 100, 0.3, true);
this.activated = true;
totaalprijs[this.i] += this.prijs;

if (this._parent.optie3_mc.activated) {
for (var p = 0; p<3; p++) {
new Tween(this._parent["optie"+p+"_mc"], "_alpha", none, this._parent["optie"+p+"_mc"]._alpha, 50, 0.3, true);
if (this._parent["optie"+p+"_mc"].activated) {
totaalprijs[this.i] -= this._parent["optie"+p+"_mc"].prijs;
this._parent["optie"+p+"_mc"].activated = false;
}
}
} else {
this.activated = true;
}
}
if ((!this._parent.optie0_mc.activated || !this._parent.optie1_mc.activated || !this._parent.optie2_mc.activated) && !this._parent.optie3_mc.activated && this._parent.optie4_mc.activated) {
trace(this._parent.optie4_mc.activated);
trace("turn off");
trace(this._parent.optie4_mc._alpha);
new Tween(this._parent.optie4_mc, "_alpha", none, this._parent.optie4_mc._alpha, 50, 0.3, true);
this._parent.optie4_mc.activated = false;
korting = false;
trace(this._parent.optie4_mc._alpha);
}
if (korting == false) {

this._parent.txtTotaal.text = "€ "+totaalprijs[this.i]+" ,-";
} else {
trace(this.i);
trace(totaalprijs[this.i]);
trace(totaalprijs[1]);
trace(this.korting+"%");
this._parent.txtTotaal.text = "€ "+(totaalprijs[this.i]-Math.round(kortingPrijs(totaalprijs[this.i], Number(this.korting))*100)/100)+" ,-";
}
};
this["rij"+i+"_mc"].txtTotaal.text = "€ "+totaalprijs[i]+" ,-";
}
this["rij"+i+"_mc"].optie4_mc.onRelease = function() {
trace("test");
if (this._parent.optie0_mc.activated && this._parent.optie1_mc.activated && this._parent.optie2_mc.activated || this._parent.optie3_mc.activated) {
trace("test");
if (this._alpha == 100) {
new Tween(this, "_alpha", none, this._alpha, 50, 0.3, true);
this.activated = false;
korting = false;
} else if (this._alpha<=50) {
new Tween(this, "_alpha", none, this._alpha, 100, 0.3, true);
this.activated = true;
korting = true;
}
if (korting == false) {
this._parent.txtTotaal.text = "€ "+totaalprijs[this.i]+" ,-";
} else {
trace(this.korting+"%");
this._parent.txtTotaal.text = "€ "+(totaalprijs[this.i]-Math.round(kortingPrijs(totaalprijs[this.i], Number(this.korting))*100)/100)+" ,-";
}
}
};
}
for (var n = 2; n<aantalkolommen; n++) {
this["hdr"+(n-2)+"_mc"].txtPrijs.htmlText = "<b>€</b> "+prijzen[n]+" ,-</b>";
}
}

wie kan mij z.s.m. helpen ??

Dauntless
%Europe/Berlin %647 %2009, 16:32
1. Je titel omschrijft je probleem niet. Maak er een passende titel van of ik gooi het topic op slot (hij is immers tegen de regels)

2. Een vraagstelling van 4 korte regeltjes gevolgd door een script van een 300tal lijnen? Je probleem zelf is ook helemaal niet duidelijk. Momenteel is het een beetje als met je auto naar een garage gaan en zeggen dat hij niet werkt, zonder enige andere informatie.

3. Documenteer je code. Als ik er zo even doorblader lijkt het er op dat het script erg slecht (onduidelijk, ondynamisch, repetitief) in elkaar steekt. Als er dan ook nog geen documentatie bij staat wordt het al helemaal moeilijk om uit te zoeken wat er gebeurt.

4. Als je een hele lap code hebt, geef je er best ook een .fla (en eventuele andere bestanden, zoals het tekstbestand) bij.

Pas deze dingen dus even aan zodat we je kunnen helpen.

maikel371
%Europe/Berlin %540 %2009, 13:58
niemand ?? :(

Jan
%Europe/Berlin %550 %2009, 14:13
Met zo'n manier van scripten ga je weinig kandidaten vinden vrees ik. Ik zou alleszins gek worden van al het horizontaal gescroll. Waarom maak jij je if else structuur zo?
if ((__reg0 = this.pakket) === "Pakket 2")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 3")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 4")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 5")
{
pakket[this.i] = "Pakket 1";
}
else
{
if (__reg0 === "Pakket 7")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 8")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 9")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 10")
{
pakket[this.i] = "Pakket 2";
}
else
{
if (__reg0 === "Pakket 12")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 13")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 14")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 15")
{
pakket[this.i] = "Pakket 3";
}
else
{
if (__reg0 === "Pakket 17")
{
pakket[this.i] = "Pakket 4";
}
else
{
if (__reg0 === "Pakket 18")
{
pakket[this.i] = "Pakket 4";
}
else
{
if (__reg0 === "Pakket 19")
{
pakket[this.i] = "Pakket 4";
}
else
{
if (__reg0 === "Pakket 20")
{
pakket[this.i] = "Pakket 4";
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}


Zo lijkt me veel overzichtelijker:
Onderstaande script doet hetzelfde als het bovenstaande script
__reg0 = this.pakket;
if (__reg0 === "Pakket 2" || __reg0 === "Pakket 3" || __reg0 === "Pakket 4" || __reg0 === "Pakket 5" )
{
pakket[this.i] = "Pakket 1";
}
else if(__reg0 === "Pakket 7" || __reg0 === "Pakket 8" || __reg0 === "Pakket 9" || __reg0 === "Pakket 10")
{
pakket[this.i] = "Pakket 2";
}
else if(__reg0 === "Pakket 12" || __reg0 === "Pakket 13" || __reg0 === "Pakket 14" || __reg0 === "Pakket 15")
{
pakket[this.i] = "Pakket 3";
}
else if(__reg0 === "Pakket 17" || __reg0 === "Pakket 18" || __reg0 === "Pakket 19" || __reg0 === "Pakket 20")
{
pakket[this.i] = "Pakket 4";
}

Als je trouwens "Pakket X" zou opslaan in elke this.pakket, bijvoorbeeld in een variabele genaamd 'pakketNaam' dan heb je al die ifs zelfs niet nodig en kan je simpelweg scripten:
//eerder:
pakket.pakketNaam="pakket 3";
//later
pakket[this.i] = __reg0.pakketNaam


Groeten;
Jan