Toon posts:

Vraagje van flash MX newbie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een vriend die ...

nee, ik heb het volgende probleem:
laat ik voor de eenvoud stellen dat mijn pagina een knop heeft en aan de andere kant een vierkant. Als ik die knop ingedrukt heb, dan moet dat vierkantje langzaam van transparant naar volledig kleur veranderen.

Vraag nu: hoe doe ik dat?

McBain

  • DirtyHennessy
  • Registratie: Oktober 2001
  • Laatst online: 31-07 19:51
Lessons al geprobeert ? of hebben ze die in MX er uit gegooit ?

Verwijderd

Koeskoes schreef op 28 september 2002 @ 00:40:
Lessons al geprobeert ? of hebben ze die in MX er uit gegooit ?
Yep, staat waarschijnlijk gewoon in de help.

Verwijderd

Topicstarter
Ja, die lessons heb ik geprobeerd, hoor.
Ik heb het met de 'tween motion'-functie geprobeerd. Het resultaat was dat ie vanzelf alle frames voortdurend doorliep.

Het vierkantje mag enkel beginnen veranderen als ik op de knop druk. Als het kleur volledig is, moet ie stoppen.

Verwijderd

Je weet dat dit met de alpha waarden van het object moet??

  • Xurk
  • Registratie: Mei 2002
  • Laatst online: 24-04-2024

Xurk

Burnside

2 manieren:
Manier 1:
Zet in een mc, het blokje, maak er eerst een graphic van, bijv. 10 frames, en in frame 1 is de graphic alpha = 0% [dit kun je doen bij properties] en in frame 10 100%, zet in frame 1 van de mc stop(); , en bij de button zet je neer:
on(release) {
block.play();
}

als je de vierkant block hebt genoemd bij instances
Dan doet ie het. Zet ook nog ff in de 10de frame van de mc van de vierkant een stop(); anders gaat ie loopen

Manier 2:
Maak een mc van de vierkant, noem het block [bij INSTANCES!]. Zet alpha op 0 [of doe in frame 1 van je film: onClipEvent(load) { _root.block._alpha = 0; }
Zet bij de button als actionscript:
on(release) {
_root.block._alpha += 1
}
if(_root.block._alpha == 100) {
_root.block._alpha += 0;
}

Zo moet ie het doen. Als je de bovenste manier gebruikt, wordt het filmpje groter, maar enige kennis van actionscript is wel vereist bij de onderste manier :)

Als je de bovenste manier niet snapt, kun je beter geen Flash gebruiken ;)

[edit] foutje [edit]

Mitsubishi Trium Galaxy - Nokia 3330 - Nokia 3510 - Motorola V525 - Samsung E730 - HTC Touch - HTC Touch HD - HTC Desire - HTC Sensation - HTC One X+ - LG Nexus 5 - LG Nexus 5X


Verwijderd

Xurk schreef op 28 september 2002 @ 01:08:
2 manieren:
Manier 1:
Zet in een mc, het blokje, maak er eerst een graphic van, bijv. 10 frames, en in frame 1 is de graphic alpha = 0% [dit kun je doen bij properties] en in frame 10 100%, zet in frame 1 van de mc stop(); , en bij de button zet je neer:
on(release) {
block.play();
}

als je de vierkant block hebt genoemd bij instances
Dan doet ie het. Zet ook nog ff in de 10de frame van de mc van de vierkant een stop(); anders gaat ie loopen

Manier 2:
Maak een mc van de vierkant, noem het block [bij INSTANCES!]. Zet alpha op 0 [of doe in frame 1 van je film: onClipEvent(load) { _root.block._alpha = 0; }
Zet bij de button als actionscript:
on(release) {
_root.block._alpha += 1
}
if(_root.block._alpha == 100) {
_root.block._alpha += 0;
}

Zo moet ie het doen. Als je de bovenste manier gebruikt, wordt het filmpje groter, maar enige kennis van actionscript is wel vereist bij de onderste manier :)

Als je de bovenste manier niet snapt, kun je beter geen Flash gebruiken ;)

[edit] foutje [edit]
Kijk, zo hoor je een oplossing te geven..!! _/-\o_

Verwijderd

Ik zou voor de AS gaan! AS ROELT over stomme timeline animaties

Verwijderd

Verwijderd schreef op 28 september 2002 @ 07:03:
Ik zou voor de AS gaan! AS ROELT over stomme timeline animaties

Wat een enorme onzin zeg, sommige animaties kun je niet eens met ActionScript voor elkaar krijgen. Die zet je dus in een movieclip. Beiden kunnen in dit geval worden gebruikt, en ik durf niet te zeggen wat de betere manier is, aangezien ik de verdere context niet ken.

Verwijderd

Mijn persoonlijke favoriet:

MC met 2 layers: 1 met de fade, 1 met een keyframe op 1 en het laatste frame met een 'stop();' erin;

MC heet 'my_btn' - hiers de AS:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
MovieClip.prototype.forward = function(){
    this.onEnterFrame = function(){
        if(this._currentframe != this._totalframes){
            this.nextFrame();
        } else {
            delete this.onEnterFrame;
        }
    }
}

MovieClip.prototype.rewind = function(){
    this.onEnterFrame = function(){
        if(this._currentframe != 1){
            this.prevFrame();
        } else {
            delete this.onEnterFrame;
        }
    }
}

my_btn.onRelease = function(){
    trace('do stuff');
}

my_btn.onRollOVer = function(){
    this.forward();
}

my_btn.onRollout = my_btn.onReleaseOutside = function(){
    this.rewind();
}


AS oplossing kan ook dmv deze functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Movieclip.prototype.fadeTo = function(speed,end){
    var dist, vel;
    var offset = 1;
    speed = "."+ speed;
    
    if (Math.abs(this._alpha - end) > offset){
        this.onEnterFrame = function() {
            dist = Math.round(end - this._alpha);
            vel = dist * speed;
            this._alpha += vel;
        }
    } else {
        delete this.onEnterFrame;
    }
}

de rollover wordt dan: this.fadeTo(3,100);
de rollout: this.fadeTo(3,0);

Soms vind ik beter een lege library te hebben dan een mindere CPU belasting... de 2de optie is lang niet altijd nauwkeurig genoeg (de offset moet nog wel es getweaked worden): als ie doorloopt kost dat weer CPU, als ie te vroeg stopt staat ie bv niet op de goeie plek.

edit:

PS1: oops! ik dacht dat het om een fadende knop ging: als het om een vierkant gaat moeten the rollover en rollout ipv 'this.forward' & 'this.rewind' , '_root.vierkant.forward' & '_root.vierkant.rewind' zijn.

als ik dan nog even verder lees (ughe) moet dat vierkant alleen onMouseDown verkleuren: ipv rollOver en rollOut moet je dan respectievelijk onPress en onRelease gebruiken.

PS2: dit is een Flash MX oplossing

  • E-Mile
  • Registratie: Juni 2002
  • Laatst online: 07-02 00:57

E-Mile

Danteezy!

Djeez, bedoelt ie niet gewoon een movieclip op je mouseover button van alpha 0 naar 100 laten lopen?

AxidanT<<Check't voor fijne muziek! (Als je van house houdt dan)


  • roytanck
  • Registratie: Oktober 1999
  • Laatst online: 07-07 09:29
Lijkt me dat dit voor een newbie erg ver gaat. Ik zou een keyframe animatie maken van laten we zeggen 50 frames. In het eerste zet je de alpha op 0, in de laatste (ff keyframe van maken) op 100. En dan een tween ertussen natuurlijk.

Vervolgens voeg je in het eerste en laatste frame deze enorm ingewikkelde actie toe:

stop();

En aan de button hang je:

on(release){
play();
}

Tuurlijk zijn er veel betere oplossingen, maar het is ook wel handig als je begrijpt wat je copy-paste... ;)

Verwijderd

Topicstarter
ok ok, bedankt voor de reacties _/-\o_. Ondertussen is het gelukt, dankzij de code hier in deze topic. Alles met ActionScript natuurlijk (heeft veel weg van java, waar ik wel al iets van wist). Met Flash krijg je erg vlot resultaten, ik ben er zeer over te spreken! Resultaat is hier te bewonderen.

Greets,
McBain

Verwijderd

Jammer dat je de tekst niet kan lezen. Als je van de button afgaat keert de flash movie weer terug naar de eerste frame.
Pagina: 1