PDA

Volledige versie bekijken : if waarde1 == waarde2 werkt hierin niet


bertvthul
%Europe/Berlin %661 %2008, 15:52
In onderstaande code vind je tussen de ////////// de code die niet door flash gepakt wordt.
Dit, terwijl een soortgelijke code wel gepakt wordt in de if-statement er onder.

Ik snap er niks van. Wie het weet mag het zeggen. Je zou me er enorm mee helpen!



var mclLoader:MovieClipLoader = new MovieClipLoader();
var oListener:Object = new Object();
mclLoader.addListener(oListener);
oListener.onLoadStart = function(mc:MovieClip):Void
{
mc.portid = this[mc._name+"portid"];
mc.naam = this[mc._name+"naam"];
mc.adres = this[mc._name+"adres"];
mc.film = this[mc._name+"film"];
mc.beschrijving = this[mc._name+"beschrijving"];
mc.nummer = this[mc._name+"nummer"];
mc.linkurl = this[mc._name+"linkurl"];
mc.prijs = this[mc._name+"prijs"];
mc.flashel = this[mc._name+"flashel"];
mc._alpha=80;
mc.createTextField("naamitem", mc.getNextHighestDepth(),0,115,150,50);
mc.naamitem.text=mc.naam;
mc.naamitem.setTextFormat(tfFormatter);

scrollKnoppen();

mc.onRollOver = function(){
this._alpha=100;
};

mc.onRollOut = function(){
this._alpha=80;
};


///////////////////////////////////////////////////////////////////////
trace (mc.portid);
//trace geeft alle waardes die voorbij komen, inclusief de waarde 4! Alleen pakt ie onderstaande code niet.

if (mc.portid==4){
trace ("DIT IS HEM");
}
///////////////////////////////////////////////////////////////////////

if ((mc.nummer==(aantalItems-1))&&(startBeginPlaatje)&&(urlport==undefined)){
huidige=mc._name;
adres=mc.adres;
nummer=mc.nummer;
portid=mc.portid;
naam=mc.naam;
beschrijving=mc.beschrijving;
film=mc.film;
prijs=mc.prijs;
linkurl=mc.linkurl;
flashel=mc.flashel;

weergevenitem();

}



mc.onRelease = function()
{
test.text=this.portid;
huidige=this._name;
adres=this.adres;
nummer=this.nummer;
portid=this.portid;
naam=this.naam;
beschrijving=this.beschrijving;
film=this.film;
prijs=this.prijs;
linkurl=this.linkurl;
flashel=this.flashel;

weergevenitem();


}

};


function ladenvancontent (){
var onzeGegevens:XML = new XML();
onzeGegevens.ignoreWhite = true;
if (urlitemid==37){
onzeGegevens.load("xmlgen/xgen-port02.php?cid=14");
} else {
onzeGegevens.load("xmlgen/xgen-port02.php");
}

onzeGegevens.onLoad = function()
{
aantalItems=this.firstChild.childNodes.length;
trace ("aantal items: "+ aantalItems);
rootScope.thumbHolder.thumbHolder2.createEmptyMovi eClip("thumbHolder3", rootScope.thumbHolder.thumbHolder2.getNextHighestD epth());
for (var i:Number = aantalItems-1; i >= 0; i--)
{
naam = this.firstChild.childNodes[i].childNodes[2].firstChild;
beschrijving = this.firstChild.childNodes[i].childNodes[3].firstChild;
adres = this.firstChild.childNodes[i].childNodes[4].firstChild;
film = this.firstChild.childNodes[i].childNodes[7].firstChild;
linkurl = this.firstChild.childNodes[i].childNodes[8].firstChild;
portid = this.firstChild.childNodes[i].childNodes[0].firstChild;
prijs = this.firstChild.childNodes[i].childNodes[9].firstChild;
flashel = this.firstChild.childNodes[i].childNodes[10].firstChild;
var mc:MovieClip = rootScope.thumbHolder.thumbHolder2.thumbHolder3.cr eateEmptyMovieClip("imageHolder" + i, rootScope.thumbHolder.thumbHolder2.thumbHolder3.ge tNextHighestDepth());
oListener["imageHolder" + i + "portid"]=portid;
oListener["imageHolder" + i + "naam"]=naam;
oListener["imageHolder" + i + "adres"]=adres;
oListener["imageHolder" + i + "beschrijving"]=beschrijving;
oListener["imageHolder" + i + "nummer"]=i;
oListener["imageHolder" + i + "film"]=film;
oListener["imageHolder" + i + "linkurl"]=linkurl;
oListener["imageHolder" + i + "prijs"]=prijs;
oListener["imageHolder" + i + "flashel"]=flashel;

mc._x = plaatsThumb;
plaatsThumb+=160;

mclLoader.loadClip("images/portfolio/thumbs/" + adres,mc);


}

};
}

Jan
%Europe/Berlin %667 %2008, 16:01
Vervang onLoadStart door onLoadInit.
Als je iets in een movieclip laadt dan worden alle variabelen erin gewist en vervangen door de content die je er inlaadt. Je kan pas nieuwe variabelen toekennen in de onLoadInit.

Groeten,
Jan

bertvthul
%Europe/Berlin %680 %2008, 16:20
Bedankt voor je reactie. Het werkt alleen nog niet correct: ik heb de code gewijzigd en een onLoadInit toegevoegd. Ook hier komt weer de waarde voorbij, maar if-statement wordt niet gepakt. Er is geen trace met "Dit is hem!".

Heb je nog een idee hoe dit kan?


var mclLoader:MovieClipLoader = new MovieClipLoader();
var oListener:Object = new Object();
mclLoader.addListener(oListener);
oListener.onLoadStart = function(mc:MovieClip):Void
{
mc.portid = this[mc._name+"portid"];
mc.naam = this[mc._name+"naam"];
mc.adres = this[mc._name+"adres"];
mc.film = this[mc._name+"film"];
mc.beschrijving = this[mc._name+"beschrijving"];
mc.nummer = this[mc._name+"nummer"];
mc.linkurl = this[mc._name+"linkurl"];
mc.prijs = this[mc._name+"prijs"];
mc.flashel = this[mc._name+"flashel"];
mc._alpha=80;
mc.createTextField("naamitem", mc.getNextHighestDepth(),0,115,150,50);
mc.naamitem.text=mc.naam;
mc.naamitem.setTextFormat(tfFormatter);

scrollKnoppen();

mc.onRollOver = function(){
this._alpha=100;
};

mc.onRollOut = function(){
this._alpha=80;
};


if ((mc.nummer==(aantalItems-1))&&(startBeginPlaatje)&&(urlport==undefined)){
huidige=mc._name;
adres=mc.adres;
nummer=mc.nummer;
portid=mc.portid;
naam=mc.naam;
beschrijving=mc.beschrijving;
film=mc.film;
prijs=mc.prijs;
linkurl=mc.linkurl;
flashel=mc.flashel;

weergevenitem();

}



mc.onRelease = function()
{
test.text=this.portid;
huidige=this._name;
adres=this.adres;
nummer=this.nummer;
portid=this.portid;
naam=this.naam;
beschrijving=this.beschrijving;
film=this.film;
prijs=this.prijs;
linkurl=this.linkurl;
flashel=this.flashel;

weergevenitem();


}

};

oListener.onLoadInit = function(mc:MovieClip):Void {
trace (mc.portid);
if (mc.portid==4){
trace ("DIT IS HEM");
}
};

mknol
%Europe/Berlin %684 %2008, 16:25
Let hier even op:
this[mc._name+"nummer"]; is een string,
(aantalItems-1) is een number

Jan
%Europe/Berlin %689 %2008, 16:32
Ik zei vervangen, niet toevoegen:
oListener.onLoadStart = function(mc:MovieClip):Void
{
moet zijn:
oListener.onLoadInit = function(mc:MovieClip):Void
{

Let hier even op:
this[mc._name+"nummer"]; is een string,
(aantalItems-1) is een number
Maakt normaal gezien niks uit (in AS2). Flash maakt zelf de nodige conversies(tenzij je de strict equality operator gebruikt):
var str:String="4";
var nr:Number=4;
trace(str==nr);//true
trace(str===nr);//false


When comparing by value, if expression1 and expression2 are different data types, ActionScript will attempt to convert the data type of expression2 to match that of expression1.



Groeten,
Jan

bertvthul
%Europe/Berlin %710 %2008, 17:02
@ Jan: Het werkt ook niet als ik het op deze manier doe.

Het werkt ook niet als ik de if-statement verander in (4 als een string):

if (mc.portid == "4"){
trace ("YES!");
}


Wanneer ik echter in deze statement mc.portid verander in mc.nummer, werkt ie wel, maar dan dus niet op de variabele die ik wil.

Blijkbaar wijken beide variabelen in type ergens van elkaar af of is er een andere oorzaak.

Hebben jullie enig idee wat het verder nog de oorzaak van kan zijn?

bertvthul
%Europe/Berlin %961 %2008, 23:04
Het verdient niet de schoonheidsprijs, maar ik heb het als volgt opgelost:


testtext.text=mc.portid;
var test:Number=testtext.text;

if (test == 4){
trace ("YES, EINDELIJK het werkt");
}


Het werkt dus wel als je de variabele via een omweg met behulp van een textvak inlaad. Het zal dus wel met het type variabele te maken hebben gehad. String/nummer.

Misschien hebben jullie nog adviezen of ideeën hoe dit zo kan.
Ik zou er graag wat van leren.