Toon posts:

[FLASHMX 2004] For loop with onPress function

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik had een vraagje waar ik niet uit kom. Ik heb een "gallery" gemaakt die dynamisch losse bestanden (swf of jpg) inlaad. Hiervoor gebruik ik createEmptyMovieclip. de eerste keer om een holder te maken die ik ga gebruiken om in te zoomen en in die holder maak ik weer een EmptyMovieclip aan waar ik dan het plaatje of swf in laad. Nu wil ik dat deze movieclips aanklikbaar zijn. Dus dat ik een onpress kan gebruiken om in te zoomen op dat plaatje. Wat hij dan doet is eigenlijk de eerste holder scalen en positioneren.


Zo ziet het er nu uit:
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
32
33
34
35
36
37
38
39
40
41
// ----------------------  Zet wat variabelen
var totalincludes = 10;
var aantalrows = 4;
var holderWidth = 350;      // width van de te inclulde swf
var holderHeight = 300;     // height van de te include swf
var holderspace = 5;
var scaling = 0.5;

// afblijven
var colcounter = 0;
var row = 0;

// ----------------------

_root.createEmptyMovieClip("stage", 1);
for (i=0; i<totalincludes; i++) {
    
    // maak een lege movieclip aan
    _root.stage.createEmptyMovieClip(["holder"+i], i+1);
    
    // vul de lege movieclip en positioneer
    with (_root.stage["holder"+i]) {
        loadMovie("includes/"+i+".swf");
        _xscale = 100 * _root.scaling;
        _yscale = 100 * _root.scaling;
        _x = ((_root.holderWidth * _root.scaling) + _root.holderspace) * _root.colcounter;
        _y = ((_root.holderHeight * _root.scaling) + _root.holderspace) * _root.row;
    }
    
    
    if (_root.colcounter >= (_root.aantalrows -1)){
        trace("nieuwe regel = "+_root.row);
        _root.row ++;
    }
    _root.colcounter ++;
    
    if (_root.colcounter == _root.aantalrows){
        _root.colcounter = 0;
    }
    
};//end for loop


als ik bijvoorbeeld boven de "//end for loop" dit zet doet hij dat niet:
code:
1
2
3
_root.stage["holder"+i].onRelease = function(){
trace("er was een onrelease");
}


kan iemand mij op weg helpen??

THANKS!

Verwijderd

Topicstarter
Ik heb het euvel gevonden.

Het probleem is dat Flash alle functies dropt zodra er een loadmovie word aangeroepen op een EmptyMovieClip. Hierdoor kan je niet meer de onPres, onRelease ect. gebruiken.

De oplossing hiervoor zou bijvoorbeeld dit kunnen zijn:
nog een EmptyMovieClip aanmaken "boven" de holder voor de jpg of swf. Deze fungeert dan als button.

je krijgt dan een volgend stramien:

1 -> stage
2 -> button
3 -> holder

dit zijn allemaal EmptyMovieClips.

dit is de oplossing:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// ----------------------  Zet wat variabelen
var totalincludes = 10;
var aantalrows = 4;
var holderWidth = 350;      // width van de te inclulde swf
var holderHeight = 300;     // height van de te include swf
var holderspace = 5;
var scaling = 0.5;

// afblijven
var colcounter = 0;
var row = 0;

// ----------------------


_root.createEmptyMovieClip("stage", 1);
for (i=0; i<totalincludes; i++) {
    _root.stage.createEmptyMovieClip(["button"+i], i);
    // maak een lege movieclip aan
    _root.stage["button"+i].createEmptyMovieClip(["holder"+i], i);
    
    // vul de lege movieclip en positioneer
    with (_root.stage["button"+i]["holder"+i]) {
        loadMovie("includes/"+i+".swf");
        _xscale = 100 * _root.scaling;
        _yscale = 100 * _root.scaling;
        _x = ((_root.holderWidth * _root.scaling) + _root.holderspace) * _root.colcounter;
        _y = ((_root.holderHeight * _root.scaling) + _root.holderspace) * _root.row;
    }
    
    
    if (_root.colcounter >= (_root.aantalrows -1)){
        trace("nieuwe regel = "+_root.row);
        _root.row ++;
    }
    _root.colcounter ++;
    
    if (_root.colcounter == _root.aantalrows){
        _root.colcounter = 0;
    }
    _root.stage["button"+i].onRollOver = function(){
        k = this._name.substr(6, 2);
        trace("button"+k);
    }
    
};//end for loop

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

euh ok? Wat is je vraag nu?
Je kan ook loadMovie doen en dan this.onPress = jouwFunctie; doen

edit.
Hier bijv. op regel 25 (2e post van je)

[ Voor 22% gewijzigd door Guillome op 14-05-2004 17:48 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router