random movie clips σε συγκεκριμενες θέσεις

Λύσεις προβλημάτων για το δημοφιλές πρόγραμμα κατασκευής παρουσιάσεων στο διαδίκτυο.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
flasaki
Δημοσιεύσεις: 12
Εγγραφή: 07 Δεκ 2009 22:03

random movie clips σε συγκεκριμενες θέσεις

Δημοσίευση από flasaki » 21 Ιαν 2010 14:04

Έχω 5 movie clip πάνω στη σκηνή. Θέλω κάθε φορά που μεταφέρομαι σ’αυτή τη σκηνή, τα movie clips να εμφανίζονται ανακατεμένα. Όχι σε τυχαίες θέσεις πάνω στη σκηνή αλλά ουσιαστικά να αλλάζουν θέσεις μεταξύ τους.
Ευχαριστώ

nkast
Δημοσιεύσεις: 137
Εγγραφή: 15 Νοέμ 2009 20:31
Επικοινωνία:

random movie clips σε συγκεκριμενες θέσεις

Δημοσίευση από nkast » 22 Ιαν 2010 13:37

Σε τι γλώσσα; AS2 , AS3;
Γενικά , πέρνα για αρχή τα instances σε ενα array.
Μετα χρησιμοποιείς ενα αλγοριθμο να κάνεις shuffle τον πινακα.
Η νεα σειρά στον πίνακα δεν εχει και τοσο σημασία.
Πρότείνω να επέμβεις στον shuffle αλγόριθμο, στο σημείο που εναλλάσει δυο αντικείμενα του πίνακα. Εκει θα εναλάσεις και τα x/y των δύο Movieclips.

Το array μετα τον πετάς!

http://sroucheray.org/blog/2009/11/arra ... -an-array/

πχ (αντιγράφω απο το πανω λινκ )
...
temp = this;
this = this[j];
this[j] = temp;
\\edw prosthetoume kwdika gia x/y swap.
this.x = this.x + this[j].x ;
this[j].x = this.x - this[j].x ;
this.x = this.x - this[j].x ;
this.y = this.y + this[j].y ;
this[j].y = this.y - this[j].y ;
this[i].y = this[i].y - this[j].y ;
...

flasaki
Δημοσιεύσεις: 12
Εγγραφή: 07 Δεκ 2009 22:03

random movie clips σε συγκεκριμενες θέσεις

Δημοσίευση από flasaki » 24 Ιαν 2010 15:20

Σ’ ευχαριστώ για τη βοήθεια!!! Έκανα κάποιες προσπάθειες αλλά επειδή δεν έχω εξοικείωση με ΑS2, δεν τα κατάφερα. Μήπως θα μπορούσες να μου επισυνάψεις ένα ολοκληρωμένο παράδειγμα;;;

nkast έγραψε:Σε τι γλώσσα; AS2 , AS3;
Γενικά , πέρνα για αρχή τα instances σε ενα array.
Μετα χρησιμοποιείς ενα αλγοριθμο να κάνεις shuffle τον πινακα.
Η νεα σειρά στον πίνακα δεν εχει και τοσο σημασία.
Πρότείνω να επέμβεις στον shuffle αλγόριθμο, στο σημείο που εναλλάσει δυο αντικείμενα του πίνακα. Εκει θα εναλάσεις και τα x/y των δύο Movieclips.

Το array μετα τον πετάς!

http://sroucheray.org/blog/2009/11/arra ... -an-array/

πχ (αντιγράφω απο το πανω λινκ )
...
temp = this;
this = this[j];
this[j] = temp;
\\edw prosthetoume kwdika gia x/y swap.
this.x = this.x + this[j].x ;
this[j].x = this.x - this[j].x ;
this.x = this.x - this[j].x ;
this.y = this.y + this[j].y ;
this[j].y = this.y - this[j].y ;
this[i].y = this[i].y - this[j].y ;
...

nkast
Δημοσιεύσεις: 137
Εγγραφή: 15 Νοέμ 2009 20:31
Επικοινωνία:

random movie clips σε συγκεκριμενες θέσεις

Δημοσίευση από nkast » 27 Ιαν 2010 11:35

Ακου, ειναι απλο... :hammer: . Οπως έλεγα, βαλε τους παρακάτω κώδικες (sic) στο frame που ειναι τα 5 mc. θα δωσεις instance names τα mc01,mc02,mc03,mc04 και mc05.


/*
* Add a shuffle function to Array object prototype
* Usage :
* var tmpArray = ["a", "b", "c", "d", "e"];
* tmpArray.shuffleMovieClips();
*/
Array.prototype.shuffleMovieClips = function ()
{
var i = this.length, j, temp;
if ( i == 0 ) return;
while ( --i )
{
j = Math.floor( Math.random() * ( i + 1 ) );
temp = this;
this = this[j];
this[j] = temp;
//swap position
this._x = (this._x ^ this[j]._x) ;
this[j]._x = (this._x ^ this[j]._x) ;
this._x = (this._x ^ this[j]._x) ;
this._y = (this._y ^ this[j]._y) ;
this[j]._y = (this._y ^ this[j]._y) ;
this[i]._y = (this[i]._y ^ this[j]._y) ;
}
};

var mcArray = [mc01,mc02,mc03,mc04,mc05];
mcArray.shuffleMovieClips();

flasaki
Δημοσιεύσεις: 12
Εγγραφή: 07 Δεκ 2009 22:03

random movie clips σε συγκεκριμενες θέσεις

Δημοσίευση από flasaki » 27 Ιαν 2010 12:53

Σ’ ευχαριστώ ΠΑΡΑ ΠΟΛΥ. Δε μπορώ ακόμη να μπω στη φιλοσοφία της AS γι’αυτό και δεν μπορώ να αντιληφθώ κάποια πράγματα. Ο κώδικας που μου έγραψες, κάνει ακριβώς αυτό που ήθελα, μόνο που έχει ένα bug. Κάποιες φορές παίρνει 1 ή 2 mc και τα βάζει σε μία άσχετη αλλά πάντα ίδια θέση (πάνω αριστερά). Προσπαθώ να καταλάβω...αν θέλεις ρίξε και εσυ μια ματιά.


nkast έγραψε:Ακου, ειναι απλο... :hammer: . Οπως έλεγα, βαλε τους παρακάτω κώδικες (sic) στο frame που ειναι τα 5 mc. θα δωσεις instance names τα mc01,mc02,mc03,mc04 και mc05.


/*
* Add a shuffle function to Array object prototype
* Usage :
* var tmpArray = ["a", "b", "c", "d", "e"];
* tmpArray.shuffleMovieClips();
*/
Array.prototype.shuffleMovieClips = function ()
{
var i = this.length, j, temp;
if ( i == 0 ) return;
while ( --i )
{
j = Math.floor( Math.random() * ( i + 1 ) );
temp = this;
this = this[j];
this[j] = temp;
//swap position
this._x = (this._x ^ this[j]._x) ;
this[j]._x = (this._x ^ this[j]._x) ;
this._x = (this._x ^ this[j]._x) ;
this._y = (this._y ^ this[j]._y) ;
this[j]._y = (this._y ^ this[j]._y) ;
this[i]._y = (this[i]._y ^ this[j]._y) ;
}
};

var mcArray = [mc01,mc02,mc03,mc04,mc05];
mcArray.shuffleMovieClips();
Συνημμένα
random_mc.rar
my file
(32.16 KiB) Μεταφορτώθηκε 154 φορές


nkast
Δημοσιεύσεις: 137
Εγγραφή: 15 Νοέμ 2009 20:31
Επικοινωνία:

random movie clips σε συγκεκριμενες θέσεις

Δημοσίευση από nkast » 29 Ιαν 2010 13:55

Εχει καποιο θεμα ο κώδικας που εναλασει τις τιμες των _x,_y .
Εναλλακτικά χρησιμοποιησε το παρακάτω:

//swap position
tempx = this._x;
this._x = this[j]._x;
this[j]._x = tempx;
tempy = this._y;
this._y = this[j]._y;
this[j]._y = tempy;

flasaki
Δημοσιεύσεις: 12
Εγγραφή: 07 Δεκ 2009 22:03

random movie clips σε συγκεκριμενες θέσεις

Δημοσίευση από flasaki » 30 Ιαν 2010 17:33

Σ’ ευχαριστώ πολύ!!! Αυτός ο κώδικας, δουλεύει μια χαρά!!! :) :) :)

nkast έγραψε:Εχει καποιο θεμα ο κώδικας που εναλασει τις τιμες των _x,_y .
Εναλλακτικά χρησιμοποιησε το παρακάτω:

//swap position
tempx = this._x;
this._x = this[j]._x;
this[j]._x = tempx;
tempy = this._y;
this._y = this[j]._y;
this[j]._y = tempy;

Απάντηση

Επιστροφή στο “Flash γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης