25. juli 2006 - 11:37
Der er
11 kommentarer og 1 løsning
for loop + variable problem
Ello ;-) Først vil jeg lige pointerer at actionscript ik er min stærke side, så hvis det er helt skævt er det nok derfor. Spm: Jeg har en del knapper (knap1, knap2 osv) som jeg gerne ville kunne loope igennem så jeg ikke skulle tildele en action manuelt til dem alle sammen (30 ialt) for(var i=1; i <= 30 ;i++){ knapvar = "knap" + i; //trace(knapvar) knapvar.onRollOver = function() { if (knapvar._currentframe != 3) { this.gotoAndStop("over"); } } } (knapperne har instans name: knap1, knap2 osv.) hermed skulle den lave 30 knapper med onRollOver vel ? :-) På forhånd tak.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Jeg tillader mig lige, at sætte det lidt pænere op: for(var I:Number = 1; i <= 30; i++) { this['knap' + i].onRollOver = function() { if(this._currentframe != 3) { this.gotoAndStop("over"); } } }
hov: for(var i:Number = 1; i <= 30; i++) { this['knap' + i].onRollOver = function() { if(this._currentframe != 3) { this.gotoAndStop("over"); } } }
Du kan ikke få en variabel til, at gå til en frame eller bearbejde den. Derfor, hvis du vil gøre det på din måde med en variabel, skal det være: for(var i:Number = 1; i <= 30; i++) { knapvar = 'knap' + i; this[knapvar].onRollOver = function() { if(this._currentframe != 3) { this.gotoAndStop("over"); } } }
... men drop den sidste, den er absolut ikke den smarteste! - den anden er meget mere lige til :)
Tak for svaret maqhem. for(var i:Number = 1; i <= 1; i++) { this['knap' + i].onRollOver = function() { if(this._currentframe != 3) { this.gotoAndStop("over"); } } } På scenen har jeg et movieklip (knap1). Ved brug af ovenstående kode går min flash i "selvsving og siger at koden scriptet for flash til at køre langsomt" ... ? Er det mig der gør noget forkert ?
Ja, du har lavet en fejl! for(var i:Number = 1; i <= 1; i++) { Denne er uendelig... Og det er ikke godt :) Var der ikke 30 mcs? For så skal du da skrive 30 i din condition (i <= 1 vs. i <= 30)
... men skal du lave en kode til bare ét enkelt mc, kan du da bare skrive: knap1.onRollOver = function() { if(this._currentframe != 3) { this.gotoAndStop("over"); } }
;D det var bare for at teste at jeg kun brugte 1. Tusinde tak maqhem - nu har jeg fået det til at virke.
Fedest :D Held og lykke med resten af projektet!
25. juli 2006 - 12:37
#10
for(var i:Number = 1; i <= 9; i++) { this['knap' + i].onRollOver = function() { if(this._currentframe != 3) { this.gotoAndStop("over"); } } this['knap' + i].onRollOut = function() { if(this._currentframe != 3) { this.gotoAndStop("link"); } } this['knap' + i].onPress = function() { this.gotoAndStop("visited"); mc_holder.gotoAndStop(i); } } ved godt at jeg har givet point.. nu ville jeg gerne flykke timeline i "mc_holder" ved onPress.. passende kunne jeg jo bruge i, sådan at knap1 = gotoAndStop(1), knap2 = gotoAndStop(2) .. men ovenstående sender alle knapper i til mc_holder frame 9 .. ?
25. juli 2006 - 12:52
#11
Prøv, at udskifte mc_holder.gotoAndStop(i); med mc_holder.gotoAndStop(this._name.split('knap')[1]); - nogle gange er Flash lidt underlig. Test lige!
25. juli 2006 - 12:53
#12
Eller mc_holder.gotoAndStop(_root['knap' + i]._name.split('knap')[1]);
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.