[Flash] this._alpha = frustratie

Pagina: 1
Acties:

  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

Topicstarter
Ik ben redelijk rusty met flash, toch dacht ik dat ik het nog wel kon. Kennelijk niet :)

Achtergrond informatie:
Ik heb een simpele site, met daarin twee movieclips. Movieclip een staat standaard aan en als je daar met je muis overgaat dan springt movieclip twee aan. Ze laten beiden dezelfde animatie zien, maar dan in een andere realiteit. Animatie een is mooi en lief en animatie twee is meer skateboard/punk achtig.

Animatie twee moet dus zichtbaar worden bij muis contact. Ik heb om dat te bereiken het volgende stukje actionscript verzonnen en in de tweede movieclip geplaatst. Ergens eerder wordt de tweede movieclip al op alpha = 0 gezet.

code:
1
2
3
4
onClipEvent(enterFrame) {
    if(this.hitTest(_root._xmouse, _root._ymouse, true)) {this._alpha = 100;} 
    else if(this.hitTest(_root._xmouse, _root._ymouse, false)) {this._alpha = 0;}
}


Easy does it. Dit werkt perfect.

Het probleem:

Maarja het is natuurlijk mooier als de tweede movieclip in fade in plaats van er ineens zijn. Ik even rondspeuren naar hoe dat ook al weer ging.

code:
1
2
3
4
5
6
7
onClipEvent(enterFrame) {
    if(this.hitTest(_root._xmouse, _root._ymouse, true)) {this._alpha = 100;} 
    diff = 5;
    else if(this.hitTest(_root._xmouse, _root._ymouse, false)) {this._alpha = 0;}
    diff = -5;
    this._alpha += diff;
}


Dit was mijn eindresultaat (plus enkele versies met andere syntax) maar ergens gaat het mis en ik zie echt niet waar.

offtopic:
Dingen met if en else, meh nooit goed om te doen met je post party waar zijn mijn hersenen :)

|{ brrr }] |


Verwijderd

in elk geval staat in het 2e stuk code diff=5 op de verkeerde plaats. er mag niets staan tussen } en else. bovendien moet je denk ik je alpha = 100 en alpha = 0 omdraaien om te laten faden.
verder blijf je nu altijd je alpha verhogen of verlagen, ook wanneer deze al 0 of 100 is. beter zou zijn om dynamisch een onEnterFrame-functie aan je clip toe te kennen, en binnen die functie een check op te nemen die er voor zorgt dat de functie weer wordt uitgeschakeld op het moment dat je alpha de juiste waarde heeft bereikt.
(ongeveer zoiets, niet getest)
code:
1
2
3
4
5
6
7
8
this.onEnterFrame = function () {
    var fadeStep = 3;
    if (this._alpha < 100) {
        this._alpha += fadeStep;
    } else {
        delete this.onEnterFrame;
    }
}

  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

Topicstarter
Er mag niets staan tussen } en else.... DOH! wist wel dat het de meeste stomme vaud was die mogelijk was. Thanks juaron. For the record als iemand anders ooit met eenzelfde probleem zit.

code:
1
2
3
4
5
6
7
8
9
onClipEvent(enterFrame) {
    if(this.hitTest(_root._xmouse, _root._ymouse, true)) 
    {diff = 5;
    this._alpha += diff;
    } 
    else if(this.hitTest(_root._xmouse, _root._ymouse, false)) 
    diff = -5;
    this._alpha += diff;
}

[ Voor 20% gewijzigd door Yellow|A op 15-12-2004 12:33 ]

|{ brrr }] |


  • bredend
  • Registratie: September 2001
  • Laatst online: 21:54
Het zou ook mooi zijn als je
code:
1
this._alpha -= 5;

zou gebruiken ipv wat je nu hebt.

Verder is een delete onEnterFrame wel zo prettig voor de performance...

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 11-05 10:29
In MX2004 kan je trouwens ook gewoon on(rollOver) en on(rollOut) events hangen aan een movieclip. Hoef je niet te hittesten :).

  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

Topicstarter
Okay ik heb het netjes gemaakt met een delete erin :)

code:
1
this._alpha -= 5;


Is inderdaad ook netter.
McVirusS schreef op woensdag 15 december 2004 @ 22:04:
In MX2004 kan je trouwens ook gewoon on(rollOver) en on(rollOut) events hangen aan een movieclip. Hoef je niet te hittesten :).
Okay die wist ik ook niet. Niet getest in dit geval, maar krijg je dan niet een irritant handje over je MC? Ik moet toch maar weer vaker met flash werken inplaats van ervan uitgaan dat photoshop me ook wel acht uur per dag kan vermaken :)

|{ brrr }] |


  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 18-05 15:14

XangadiX

trepanatie is zóó kinderachtig

je kunt dat zelfs netjes vanuit je script doen
my_movieclip.onRelease = function() { //statements }

dus omdat je de handleiding niet gelezen hebt, je niet op de W&G meeting bent geweest EN omdat je YELLOW heet, vraag je er natuurlijk om:

Afbeeldingslocatie: http://crew.tweakers.net/devschuur/gelekaart2.gif

gele kaart!

Stoer; Marduq


  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

Topicstarter
Wat moet ik nu spreekkoren gaan zitten aanmoedigen naar je?

"Xanga is de h*er van McVirusS" :P

code:
1
my_movieclip.onRelease = function()


Dat is wel netjes ja, wist ik weer niet, maarja wat ik niet weet kan google vullen :)

[ Voor 4% gewijzigd door Yellow|A op 16-12-2004 16:24 ]

|{ brrr }] |


  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 18-05 15:14

XangadiX

trepanatie is zóó kinderachtig

hey gele, kijk uit he, anders staak ik deze wedstrijd!

misschien wil je het meteen invullen bij macromedia trouwens ;)

[ Voor 39% gewijzigd door XangadiX op 16-12-2004 20:19 ]

Stoer; Marduq

Pagina: 1