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

Farbe von Movieclip ändern [Flash 8]

 


AntwortenRegistrieren Seite1  

Jule88#1
Benutzerbild von Jule88
Beiträge: 43
Wohnort: Leonberg
Registriert: Jan 2010

20.06.2010, 15:10

HalliHallo,

ich habe ein kleines Problem beim ändern der Farbe eines Movieclips über AS 2.0.
Ich habe mehrere Buttons, über die verschiedene Movieclips ausgewählt werden können, mit denen dann gezeichnet werden kann. Zu Beginn haben sie alle die Farbe weiß, was über AS gut funktioniert.
Beim Drücken eines Farbbuttons soll dann die Farbe der Movieclips geändert werden. Die bereits gezeichneten sollen jedoch weiß bleiben, nur die, die danach gezeichnet werden sollen dann eine andere Farbe haben.

So sieht das ganze bis jetzt aus.

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
btn1.onRelease = function () {
     eins=true;
     zwei=false;   
};

btn2.onRelease = function () {
     eins=false;
     zwei=true;   
};

var eins, zwei;
var i:Number = 0;
var container:MovieClip  = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var history:Array = new Array;

onMouseDown = function () {
       history[history.length] = new Array(i, i);
      
      onMouseMove = function () {
         if(eins) {
           _root.container.attachMovie("grafik1", "grafik" + i, i);
             musik(_xmouse, _ymouse);
         }
         else if(zwei) {
           _root.container.attachMovie("grafik2", "grafik" + i, i);
             musik(_xmouse, _ymouse);
         }
 
                   _root.container["grafik"+i]._y = _ymouse;
         _root.container["grafik"+i]._x = _xmouse;      
         _root.container["grafik"+i]._rotation = Math.sin(i) * 400;      
         _root.container["grafik"+i]._alpha = Math.random() * 50;
        
         // Farbe festlegen / ändern

         var meineFarbe = "0xFFFFFF";
        
         pink_btn.onRelease = function() {
                var meineFarbe = "0xFF3399";
               var intervalId2:Number;
         }
        
         a = new Color(_root.container["grafik"+i]);      
         intervalId2 = a.setRGB(meineFarbe);
        
         history[history.length - 1][1]++;
         i++;
       }      
}      

onMouseUp = function(){
    if(history[history.length - 1][0] == i){
          undoFunction();
     }
     delete onMouseMove
}


Wie gesagt, das sie zu Beginn alle weiß sind klappt, aber die Farbe ändern leider nicht.
Sieht jemand meinen Fehler?

Grüße Jule
Schlagwörter: Farbe ändern, Movieclip
jomac#2
Benutzerbild von jomac
Beiträge: 89
Wohnort: CH
Registriert: Jun 2010

20.06.2010, 15:46

Ich weiss nicht, ob es nur daran liegt, aber der Wert von meineFarbe sollte ein integer sein, also int/uint (besser wär uint, da der Alphakanal u.U. in die selbe Zahl genommen wird) und nicht ein String. "0xFFFFFF" --> String hingegen 0xFFFFFF hexadezimale Zahl (16777215), dar. Das steht für 0xFFFFFF jeweils von 0-255
Jule88#3
Benutzerbild von Jule88
Beiträge: 43
Wohnort: Leonberg
Registriert: Jan 2010

Themenautor/in

20.06.2010, 15:52

mhm danke, aber daran scheint es nicht zu liegen. Ändert sich nichts. Den Wert "0xFFFFFF" nimmt er ja, er nimmt nur nicht den Wert "0xFF3399", der durch den Button festgelegt wird.
jomac#4
Benutzerbild von jomac
Beiträge: 89
Wohnort: CH
Registriert: Jun 2010

20.06.2010, 16:01

Funktionierts mit einer anderen Farbe am Anfang?
Noch etwas das auf den 1. Blick komisch aussieht:
ActionScript:
1
2
3
4
         pink_btn.onRelease = function() {
                  var meineFarbe = "0xFF3399";
                 var intervalId2:Number;
           }
hast du innerhalb von onmousedown->onmousemove->.. kommt es überhaupt jemals dazu bzw. warum setzt du das da hin und bei jedem mousemove wird die Funktion neu gesetzt.
Versuch mal mit trace oder dem Debugger dir ausgeben zu lassen, was z.B. die aktuelle Farbe ist und ob die jemals gesetzt wird.
Dann lass dir noch a ausgeben (die Color-Instanz).

PS: noch was du musst nicht var benutzen, wenn die Variabel im Klassen-Scope deklariert ist und du hast das doch auch gemacht, oder? Sonst setzt du eine lokale variable, die danach nicht mehr verwendet wird.
Geändert von jomac am 20.06.10 um 16:03 Uhr
Jule88#5
Benutzerbild von Jule88
Beiträge: 43
Wohnort: Leonberg
Registriert: Jan 2010

Themenautor/in

20.06.2010, 16:09

Also "meineFarbe" gibt bei trace immer "0xFFFFFF" aus, und das die ganze zeit (klar immer bei MouseMove). Bei a kommt nur "[object Object]".

Ich kann auch anstatt "0xFFFFFF" eine andere Farbe nehmen, das macht er dann auch. Er ändert sie nur nicht, nach drücken des Buttons. Wenn ich das ganze außerhalb von "onmousedown, onmousemove" setzte gehts gar nicht mehr. Dann macht er sie auch nicht mehr weiß sondern belässt sie in ihrere eigentlichen Farbe.
Geändert von Jule88 am 20.06.10 um 16:09 Uhr
jomac#6
Benutzerbild von jomac
Beiträge: 89
Wohnort: CH
Registriert: Jun 2010

20.06.2010, 16:15

Vieleicht etwas klarer:
ActionScript:
1
2
3
4
         pink_btn.onRelease = function() {
                  var meineFarbe = "0xFF3399"; // das var hier weg und als hex -> meineFarbe = 0xFF3399;
               var intervalId2:Number;
           }
musst du nach draussen verlegen das bedeutet auf die selbe Ebene wie onmousedown.
ActionScript:
1var meineFarbe = "0xFFFFFF; // in meineFarbe = 0xFFFFFF; ändern

Und private var meineFarbe;auf Stufe der Klasse oder wo du das ganze Script drinnen hast.
Jule88#7
Benutzerbild von Jule88
Beiträge: 43
Wohnort: Leonberg
Registriert: Jan 2010

Themenautor/in

20.06.2010, 21:07

Also das hat irgendwie nicht so hingehauen, oder ich hab es nicht so ganz verstanden :)
Ich hab es jetzt folgender maßen gelöst:

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
pink.onRelease = function () {
     weiss=false;
     pink=true;
};

var i:Number = 0;
var container:MovieClip  = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var history:Array = new Array;

onMouseDown = function () {
 
       history[history.length] = new Array(i, i);
      
      onMouseMove = function () {
         if (weiss) {
            if(eins) {
              _root.container.attachMovie("grafik1", "grafik" + i, i);
              musik(_xmouse, _ymouse);
              var meineFarbe = 0xFFFFFF;
              a = new Color(_root.container["grafik"+i]);
              a.setRGB(meineFarbe);
            }
            else if(zwei) {
              _root.container.attachMovie("grafik2", "grafik" + i, i);
              musik(_xmouse, _ymouse);
              var meineFarbe = 0xFFFFFF;
              a = new Color(_root.container["grafik"+i]);
              a.setRGB(meineFarbe);
            }


usw..... ist zwar jetzt ziemlich lang geworden so, aber es erfüllt seinen Zweck.
jomac#8
Benutzerbild von jomac
Beiträge: 89
Wohnort: CH
Registriert: Jun 2010

20.06.2010, 22:15

Dein Problem war sehr wahrscheinlich, dass die Variable nicht im selben scope war. Beispiel wie sie es wäre:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pink.onRelease  = function () {
  meineFarbe = 0xF52887;
};
weiss.onRelease  = function () {
  meineFarbe = 0xFFFFFF;
};
var meineFarbe:uint = 0xFFFFFF; // in einem gemeinsamen scope als var deklariert
var i:Number = 0;
var container:MovieClip  = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var history:Array = new Array;

onMouseDown = function(){
        history[history.length] = new Array(i, i);
        onMouseMove = function () {
              if(eins) {
                _root.container.attachMovie("grafik1", "grafik" + i, i);
              }else if(zwei) {
                _root.container.attachMovie("grafik2", "grafik" + i, i);
              }
               musik(_xmouse, _ymouse);
               a = new Color(_root.container["grafik"+i]);
               a.setRGB(meineFarbe); //...
Jule88#9
Benutzerbild von Jule88
Beiträge: 43
Wohnort: Leonberg
Registriert: Jan 2010

Themenautor/in

27.06.2010, 22:52

Ohja, daran wird es gelegen haben. Vielen Dank dir nochmal!

Grüße Jule

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2024 Sebastian Wichmann - Flashhilfe.de