Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-03-2006, 16:23   #1 (permalink)
lernwillig
 
Benutzerbild von 23012
 
Registriert seit: Jan 2002
Ort: auf dem Land
Beiträge: 1.327
Positionsarray - bitte keine doppelten!

Hallo,
ein kleines Problem ist aufgetaucht. Vielleicht hat einer
von Euch eine Idee:
buttons = new Array(b0,b1,b2,b3,b4,b5,b6,b7,b8)
xpos = new Array (100,200,300,400,500,600)
ypos = new Array (100,200,300,400,500,600)
//
//
verteilen.onRelease = function(){
for(var i=0; i<9;i++){
buttons[i].gotoAndStop([i]);
buttons[i]._x=xpos [random(i)];// war [i]
buttons[i]._y=ypos[random(i)];
}

Die Buttons nehmen sich also zufallsmässig einen
xWert und einen yWert und setzen sich an die Position.

Problem: keine Stelle darf doppelt besetzt werden.
Und: Es scheinen immer welche zu fehlen - ist mein
random(i) falsch?

Für Hilfe danke im voraus!
23012

Ja - ich habe den anderen Thread gelesen,
arrays per random raussuchen und gucken ob doppelt
kann ihn aber nicht auf mein Problem anwenden...
__________________
[TUTORIAL] Nahtlose Muster erstellen in Photoshop
23012 ist offline   Mit Zitat antworten
Alt 05-03-2006, 16:34   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Tag!

Deine Arrays sollten aber schon auch 9 Werte für 9 Buttons enthalten...
PHP-Code:
buttons = new Array(b0b1b2b3b4b5b6b7b8);
xpos = new Array(0100200300400500600700800);
ypos = new Array(0100200300400500600700800);
//
verteilen.onRelease = function(){ 
for (var 
0i<9i++) {
    
this[buttons[i]].gotoAndStop([i]);
    
this[buttons[i]]._x Number(xpos.splice(random(xpos.length), 1).toString());
    
this[buttons[i]]._y Number(ypos.splice(random(ypos.length), 1).toString());
}} 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 05-03-2006, 18:51   #3 (permalink)
lernwillig
 
Benutzerbild von 23012
 
Registriert seit: Jan 2002
Ort: auf dem Land
Beiträge: 1.327
Hallo und danke für die schnelle Antwort!
Leider klappt es so nicht. Ich habe 36 (nicht 81) Positionen für
9 Buttons, die sich auf Klick neu verteilen sollen, jedesmal anders.
Also eigentlich bräuchte ich Wertpaare (x/y). Ausserdem zeigt
er mir mit Deinem Skript zweimal die Nr.1, dafür mit meinem
die Nr.9 garnicht.
Bestimmt ist da noch etwas anderes falsch...
Könntest Du Dir die fla mal ansehen?
Danke und Gruss
23012
Angehängte Dateien
Dateityp: zip positionieren.ZIP (22,3 KB, 4x aufgerufen)
__________________
[TUTORIAL] Nahtlose Muster erstellen in Photoshop
23012 ist offline   Mit Zitat antworten
Alt 05-03-2006, 19:21   #4 (permalink)
r0b
Neuer User
 
Benutzerbild von r0b
 
Registriert seit: Feb 2002
Ort: Hamburg
Beiträge: 1.281
Such hier im Forum mal nach Array.shuffle(); Ist 'ne kleine Erweiterung die dir ein Array durchwürfelt.

PHP-Code:
buttons = new Array(b0,b1,b2,b3,b4,b5,b6,b7,b8);
xpos = new Array (100,200,300,400,500,600);
ypos = new Array (100,200,300,400,500,600);

xpos.shuffle();
ypos.shuffle();

verteilen.onRelease = function(){

for ( var 
i++ ) {
buttons[i].gotoAndStop(i);
buttons[i]._x xpos[i];
buttons[i]._y ypos[i];

Der Vorteil ist, das du dann die Arrays immer noch hast um ggf. später nochmal auf die Coordinaten zuzugreifen und die Schleife zum platzieren ist wesentlich simpler als vorher.

Gruß

Robert
__________________
robertreich.de v4 | Pixelfonts & FlashSite Tutorial
Friends of ED - Byte Size Flash MX: Adventures in Optimization

"Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime."

Geändert von r0b (05-03-2006 um 19:22 Uhr)
r0b ist offline   Mit Zitat antworten
Alt 06-03-2006, 08:50   #5 (permalink)
lernwillig
 
Benutzerbild von 23012
 
Registriert seit: Jan 2002
Ort: auf dem Land
Beiträge: 1.327
Hallo,
danke für Eure Mühe! Das Mischen ist aber nicht das Problem,
sondern vor allem die Doppelten, und ich habe wohl noch
einen anderen Fehler darin, weil mir garnicht alle 9 angezeigt
werden.
Ich muss es wohl noch anders probieren. Ich habe auch
schon daran gedacht, ein Lottoskript zu nehmen, und bei den
ausgelosten Positionen werden MCs attached.
Oder könnte man dieses Osterspiel von Flashstar
http://www.flashstar.de/fla/mx/fsostern.swf
so umbauen, dass es beim Start nicht jedesmal die gleiche
Anordnung zeigt, sondern eine zufällige, aber immer mit
genau 9 "Treffern" ?

Code:
// Ausgangswerte
spielLevel = new Array();

// Spielfeld Array definieren
// 3 entspricht kein Treffer
// 2 enspricht Treffer
spielLevel = [[3,3,3,2,3,3],
	     [2,3,2,3,2,3],
	     [3,3,3,2,3,2],
	     [3,2,3,3,3,2],
	     [3,3,2,3,3,3]];
Danke und Gruss
23012
__________________
[TUTORIAL] Nahtlose Muster erstellen in Photoshop
23012 ist offline   Mit Zitat antworten
Alt 06-03-2006, 09:57   #6 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
So vielleicht?
PHP-Code:
var buttons = new Array(b0,b1,b2,b3,b4,b5,b6,b7,b8);
var 
xpos = new Array (100,200,300,400,500,600);
var 
ypos = new Array (100,200,300,400,500,600);

var 
pos a();

verteilen.onRelease = function()

    var 
o;
    var 
rnd;
    
// kopiert das Array pos, damit wir pos nicht immer 
    // wieder neu erstellen muessen
    
var tmp = [].concatpos );
    var 
butt;
    
    for( var 
0buttons.lengthi++ )
    { 
        
rnd Math.ceilMath.random() * tmp.length );
        
        
tmp.splicernd);
        
        
butt buttons];
        
        
butt._x o].x;
        
butt._y o].y;
        
butt.gotoAndStop);
    }
}

// legt aus xpos und ypos ein Array an
function a()
{
    var 
pos = [];
    var 
yl ypos.length;
    var 
xl xpos.length;
    
    for( var 
0xli++ )
    {
        for( var 
0ylj++ )
        {
            
pos.push( { xxpos], yypos] } );
        }
    }
    
    return 
pos;

__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 06-03-2006, 10:25   #7 (permalink)
lernwillig
 
Benutzerbild von 23012
 
Registriert seit: Jan 2002
Ort: auf dem Land
Beiträge: 1.327
Thumbs up

Hallo @ rendner[i],
das scheint zu gehen - vielen Dank für den schönen
Code. Jetzt werd ich erst mal weiter basteln und
das Ergebnis, wenn es funktioniert, auch hier
vorzeigen.
Danke und Gruss
23012
__________________
[TUTORIAL] Nahtlose Muster erstellen in Photoshop
23012 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 02:16 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele