{lang: 'de'}
Flashhilfe.de - Flash Community

Probleme mit attachMovie in einer for-Schleife [Flash 8]

 


AntwortenRegistrieren Seite1  

spastman1#1
Benutzerbild von spastman1
Beiträge: 7
Registriert: Aug 2008

04.09.2010, 18:11

Hallo zusammen,
wieder einmal hab ich ein Problem und hoffe ihr könnt mir helfen.

Ich habe mir das 3D-Rotationsmenü von TQxTim runtergeladen, welches für meine Zwecke äußerst passend ist (http://www.flashhilfe.de/forum/flash/3d-rotationsmenue-bildergalerie-bildrotation-249837-249837.html).
Beim klick auf ein kleines Bild im Rotationsmenü wird ein entsprechendes Bild in den Container geladen.

Ich möchte nun, dass beim klick auf ein kleines Bild zusätzlich ein Movieclip aus der Bibliothek in einen zweiten Container geladen wird.

Hier ist mein modifiziertes Script:
ActionScript:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//Speicherort Menuebilder
menuebilder = ["bilder/mini0.jpg", "bilder/mini1.jpg", "bilder/mini2.jpg", "bilder/mini3.jpg", "bilder/mini4.jpg", "bilder/mini5.jpg", "bilder/mini6.jpg", "bilder/mini7.jpg", "bilder/mini8.jpg", "bilder/mini9.jpg", "bilder/mini10.jpg", "bilder/mini11.jpg", "bilder/mini12.jpg", "bilder/mini13.jpg", "bilder/mini14.jpg", "bilder/mini15.jpg", "bilder/mini16.jpg", "bilder/mini17.jpg", "bilder/mini18.jpg"];
//blendet den Ladebalken aus
balken._visible = false;
//FadeOut-Funktion
function fadeOut(ladeziel, speed) {
     onEnterFrame = function () {
        if (container._alpha>1) {
           container._alpha -= speed;
           // wenn nicht, dann Ladebalken
      } else {
           container.loadMovie(ladeziel);
           onEnterFrame = function () { balken._visible = true;balken._xscale = int(Math.round(container.getBytesLoaded()/container.getBytesTotal()*100));if (container.getBytesLoaded()>=container.getBytesTotal() && container.getBytesLoaded()>12) {delete onEnterFrame;balken._visible = false;fadeIn(speed);}};
        }
        if (container2._alpha>1) {
           container2._alpha -= speed;
        } else {
           container2.attachMovie("mc_detail"+i, "mc_detail"+i, (i+100));  //Hier ist das PROBLEM!!
         onEnterFrame = function () {
              fadeIn(speed);
           }
        }
     }
}
//FadeIn-Funktion
function fadeIn(speed) {
     onEnterFrame = function () {
        if (container._alpha<99) {
           container._alpha += speed;
        } else {
           delete onEnterFrame;
        }
        if (container2._alpha<99) {
           container2._alpha += speed;
        } else {
           delete onEnterFrame;
        }
     }
}

//Rotationsmenue
MovieClip.prototype.rotation_menue = function(bildListe, posX, posY, alpha, fokus, posZ, radius, rsichtbar, drehfaktor) {
     var mwinkel = 0;
     var bilder = [];
     var pi = 2*Math.PI;
     var signal = true;
     var bild, dimension, piwinkel;
     this._x = posX;
     this._y = posY;
     this._alpha = alpha;
     //Menuebilder werden eingelesen
   for (var i = 0; i<bildListe.length; i++) {
        bild = this.attachMovie("bildrahmen", "bild"+i, i);
        bild.wphase = pi/bildListe.length*i;
        bild.container.loadMovie(bildListe[i]);
        //Speicherort der Anzeigebilder
      bild.url = "bilder/big"+i+".jpg";
        //Aktion bei Klick auf Bild
      bild.onRelease = function() {
           trace(this.url);
           //Anzeigebilder werden eingelesen
         fadeOut(this.url, 10);
        };
        //aendert das Rotationsverhalten, wenn Maus auf Bild
      bild.onRollOver = function() {
           //gibt den Bereich an, ab dem die Rotation stoppt // "this._xscale" faengt die hinteren Bilder ab
         if (_root._xmouse>Stage.width/2-80 && _root._xmouse<Stage.width/2+80 && this._xscale>50) {
              signal = false;
           }
        };
        bild.onRollOut = function() {
           signal = true;
        };
        //loescht den Rahmen, wenn rsichtbar = false
      if (rsichtbar == false) {
           bild.rahmen._visible = 0;
        }
        //Funktion wird auf Bilder angewendet
      bilder.push(bild);
     }
     //Rotation + Bildgroeße
   this.onEnterFrame = function() {
        if (signal) {
           mwinkel += zentrum._xmouse/drehfaktor;
           if (mwinkel>=pi) {
              mwinkel -= pi;
           }
           if (mwinkel<0) {
              mwinkel += pi;
           }
           for (var i = 0; i<bilder.length; i++) {
              bild = bilder[i];
              bild.x = radius*Math.cos(bild.wphase+mwinkel);
              bild.z = radius*Math.sin(bild.wphase+mwinkel)+posZ;
              //dimension ändert die Breite der Rotation
            dimension = fokus/bild.z;
              //*0.5 wurde von mir hinzugefügt => Bilder klappen nicht so schnell um die Kurve
            piwinkel = Math.atan2(bild.x, bild.z)*0.5;
              bild._x = bild.x*dimension;
              bild._xscale = -100*dimension*Math.sin(bild.wphase+mwinkel+piwinkel);
              bild._yscale = 100*dimension;
              bild.swapDepths(-(int(bild.z)));
           }
        }
     };
};
//(Bilderliste, PosBreite, PosHoehe, Sichtbarkeit, Zoom, PosTiefe, Radius, Rahmen, Drehfaktor);
zentrum.rotation_menue(menuebilder, Stage.width/2, 410, 100, 170, 900, 700, true, -10000);


Das Problem ist, so glaube ich, in Zeile 19:
ActionScript:
1container2.attachMovie("mc_detail"+i, "mc_detail"+i, (i+100));

Schreibe ich es so, wird nichts in den zweiten Container geladen.

Mit dieser Schreibweise wird der Movieclip "mc_detail0" in den zweiten Container geladen:
ActionScript:
1container2.attachMovie("mc_detail0", "mc_detail"+i, (i+100));

Aber jetzt wird natürlich für jedes Bild immer derselbe Movieclip in den zweiten Container geladen. Das soll nicht so sein. Ich will für jedes Bild (big0.jpg - bild18.jpg) den entsprechenden Movieclip (mc_detail0 - mc_detail18) in den zweiten Container geladen haben.

Ich hoffe ich habe mein Problem einigermaßen verständlich geschildert.
Hat da irgendjemand eine Idee??
RustyCake#2
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

04.09.2010, 18:33