Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-11-2005, 09:00   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 181
Array index zurückgeben bzw. auslesen

Hallo,
zunächst einmal das script um das es geht:

PHP-Code:
stop();
// Erzeugen der Bubbles
for (i=1i<game.rowsi++) {
    
// Erzeugt die Reihen
    
for (j=1j<game.columnsj++) {
        
// Erzeugen der Spalten
        
        // Erzeugen der Farbe
        
var color "b"+Math.round(Math.random()*game.colors);
        
        
// Farbe im Array speichern
        
var colors = new Array();
        
colors[i][j] = color;    
        
        
// Bubblename erzeugen
        
var bubblename "bubble_"+i+"_"+j+"_"+color;
        
        
// Bubble an MC-Welt anhängen
        
game.path.attachMovie("bubble"bubblenamegame.depth);
        
        
// Positionierung
        
game.path[bubblename]._x j*game.spacing;
        
game.path[bubblename]._y i*game.spacing;
        
game.path[bubblename].gotoAndStop(color);
        
game.depth++;
        
trace(bubblename);
    }

Ich spechere also einen farbwert, bzw. erzeuge eine Zufallszahl welche dann im bubble_mc auf eine Marke springt, welche dann das entsprechende Bild enthält. Nun möchte ich eine Matrix innerhalb eines Array speichern um die generieteren Farben einer Posision zuordnen zu können.

Später möchte ich herausfiltern, welche Farben nebeneinander liegen, bzw. wieviele gleich Farben nebeneinander liegen. Dazu auch die Matrix. Um das heraus zu finden, bediene ich mich dann eines onEnterFrames Events in welchem ich dann die Arrayinhalte mittels Schleife vergleiche.

PHP-Code:
_root.onEnterFrame = function()
{
    for (
i=1i<game.columnsi++) {
        for (
j=1j<game.columnsj++) {
         if( 
colors[i][j] == colors[i-1][j-1] )
         { 
         
trace("test");
         }
             
/*else if ( colors[i][j] == colors[i+1][j+1] ) 
            else if ( colors[i][j] == colors[i][j-1] )
            else if ( colors[i][j] == colors[i-1][j] )
            else if ( colors[i][j] == colors[i+1][j] )
            else ( colors[i][j] == colors[i][j+1] )*/
        
         
        
}
    } 
Nun mein Problem. Ich möchte nun statt "trace()" diesem Index des Arrays eine neue Zufallsfarbe zuordnen und wissen wo im Array etwas geändert wurde. Dazu müsste ich ja den Indexwert speichern können, an welchem sich etwas ändert.

1.) Gibt es eine Möglichkeit sich den Indes zurückgeben zu lassen?
2.) gibt es eine effektivere Methode die Arrayinhalte zu vergleichen als die von mir verwendete?

Danke und Gruß
Angehängte Dateien
Dateityp: zip bubbles_01.zip (25,9 KB, 2x aufgerufen)
__________________
Gruß Michael
xoos ist offline   Mit Zitat antworten
Alt 27-11-2005, 12:14   #2 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
dein script funzt schon vom prinzip nicht, weil die variable color local läuft, die ist futsch, sobald die funktion zuende ist.
lösung:
schreib den befehl "var colors = new Array();"
gleich nach der stop(); funktion.

Zitat:
Ich möchte nun statt "trace()" diesem Index des Arrays eine neue Zufallsfarbe zuordnen und wissen wo im Array etwas geändert wurde. Dazu müsste ich ja den Indexwert speichern können, an welchem sich etwas ändert.
und wo is dat problem ?
PHP-Code:
_root.onEnterFrame = function() 

    var 
arrTemp=[];
    for (
i=1i<game.columnsi++) { 
        for (
j=1j<game.columnsj++) { 
         if( 
colors[i][j] == colors[i-1][j-1] ) 
         {  
          
colors[i][j]="b"+Math.round(Math.random()*game.colors); 
          
arrTemp.push({nX:i,nY:j}); 
         } 
        } 
    }  
    
// alle veränderten elemente im array arrTemp

elemente(indexpositionen) die verändert wurden kannst du dann so ansprechen:
PHP-Code:
var myNewColor=colors[arrTemp[0].nX][arrTemp[0].nY]; 
gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele