Flashhilfe.de - Flash Community

Elemente von der Bilbliothek per Zufall auf die Bühne einfügen und animieren [Flash 10]

Forum > ActionScript 3.0 > Elemente von der Bilbliothek per Zufall auf die Bühne einfügen und animieren

 


AntwortenRegistrieren Seite1  

 11.04.2011, 14:53 
Beiträge: 11
Registriert: Mar 2011

Elemente von der Bilbliothek per Zufall auf die Bühne einfügen und animieren
Hallo zusammen,

ich brauche eure Hilfe und zwar:

ich habe in der Bilbliothek fünf verschidene Bälle (rot, grün, blau, orange und gelb), sie möchte ich per Zufall in den oberen Rand der Bühne einfügen und von dort sollen sie soweit nach unten  "fallen" bis sie unten eine Eimer erreichen.
habt ihr eine Idee wie ich das umsetzen kann?

danke im Voraus :)
Schlagwörter: Animation, random
 11.04.2011, 17:04Re1
Benutzerbild von Kerstin77
Beiträge: 924
Registriert: Jul 2008

Hi,

schau Dir mal getDefinitionByName an, in Verbindung mit einer Zufallszahl kannst Du so die Bälle mit zufälliger Farbe auf die Bühne bringen.

Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
 11.04.2011, 17:08Re2
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

Vielen Dank Kerstin77, werd mir das mal anschauen :)
Geändert von Zika.BentO am 11.04.11 um 17:10 Uhr

 
nicht sichtbar bei eingeloggten Mitgliedern
 11.04.2011, 17:15Re3
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

Hallo,

ergänzend zu Kerstins Vorschlag:
wenn sich tatsächlich nur die Farbe der Bälle ändert, brauchst du eigentlich nur einen einzigen Ball in der Bibliothek, von dem du beliebig viele Instanzen auf die Bühne "adden" kannst. Die Farbe der einzelnen Ball-Instanzen kannst du dann entweder per ColorTransform oder noch komfortabler über eine Tweening-Klasse wie Caurina-Tweener verändern.

Patrick
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
 11.04.2011, 17:41Re4
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

Danke für die schnelle Antwort.

hab aber leider immer noch ne problem mit random, ich weiss leider immer noch nicht wie ich das einsetzen kann. vor allem wenn es um mc geht :/
 11.04.2011, 18:12Re5
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

Die Methode Math.random(); macht nichts anderes, als die eine so genannte Pseudo-Zufallszahl zwischen 0 und 1 auszugeben. Wichtig ist ZWISCHEN. Das heißt, du wirst niemals eine 0 und niemals eine 1 ausgegeben bekommen. Das kannst du allerdings durch ein paar andere mathematische Spielereien erreichen.
Eine Möglichkeit, deine MovieClips per Zufall auf der Bühne anzuzeigen wäre, die Instanznamen der Ball-MovieClips in einem Array zu speichern, das Array mit einer for-Schleife zu durchlaufen und das Element an der durch eine "Zufallsfunktion" ermittelten Position im Array anzeigen zu lassen.

Ich hoffe, ich hab dich jetzt nicht total verwirrt ;)
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 11.04.2011, 18:16Re6
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

klassssse!!

vielen vielen vielen Dank, ich werde das mal ausprobieren. Danke nochmal :)
 11.04.2011, 19:59Re7
Benutzerbild von RustyCake
Beiträge: 1769
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

Möglichkeit.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var mcArray:Array = ["weiss_mc","tuerkis_mc","schwarz_mc","rot_mc","rosa_mc","orange_mc","magenta_mc","lila_mc","gruen_mc","gelb_mc","blau_mc"];
function initSort ():void
{
     mcArray.sort (function () {return Math.floor(Math.random()*mcArray.length-1);});
     startMc ();
}
function startMc ():void
{
     for (var i:uint =0; i< mcArray.length; i++)
     {
        var c:Class = getDefinitionByName(mcArray[i]) as Class;
        var mc:MovieClip = new c   as MovieClip;
        addChild(mc) as MovieClip;
        mc.x = (20 * i)+50;
        mc.y = (20 * i)+50;
     }
}
initSort ();
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
 11.04.2011, 20:56Re8
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

Danke für eure Hilfe :)
aber ich bekomme trotzdem folgende Fehlermeldung :(((
ReferenceError: Error #1065: Variable [class ballGruen_mc] ist nicht definiert.
   at global/flash.utils::getDefinitionByName()
   at spiel_Uhr_fla::MainTimeline/startMc()
   at spiel_Uhr_fla::MainTimeline/initSort()
   at spiel_Uhr_fla::MainTimeline/frame1()

die Elemente sind schon für AS exportiert, ich verstehe nicht woran es liegt :/
 11.04.2011, 23:21Re9
Benutzerbild von Kerstin77
Beiträge: 924
Registriert: Jul 2008

Hi,

ist der Exportname denn auch identisch mit den namen aus dem mcArray? Und sind wirklich alle Bälle für AS exportiert? Kannst sonst auch gerne Deine Datei anhängen.

Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
 12.04.2011, 13:25Re10
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

Hallo,

was habe ich bitte hier falsch gemacht???
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//rohr1
var Gelb1_mc=new BGelb;
var Blau1_mc=new BBlau;
var Rot1_mc=new BRot;
var Orange1_mc=new BOrange;
var Gruen1_mc=new BGruen;

var rohr1:Array=new Array [Gelb1_mc, Blau1_mc, Rot1_mc, Orange1_mc, Gruen1_mc];
var zufall:uint=Math.floor(Math.random()* rohr1.length);
for (var ele in rohr1){
     rohr1[ele].x=75;
     rohr1[ele].y=11.5;
     addChild(rohr1[zufall]);
     }


ich bokomme folgende fehlermeldung:
TypeError: Error #1007: Versuchte Instanziierung für einen Nicht-Konstruktor.
   at Unbenannt_fla::MainTimeline/frame1()
Geändert von Zika.BentO am 12.04.11 um 13:25 Uhr

 12.04.2011, 17:56Re11
Benutzerbild von RustyCake
Beiträge: 1769
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

Entweder so:
var rohr1:Array=[Gelb1_mc, Blau1_mc, Rot1_mc, Orange1_mc, Gruen1_mc];
oder so:
var rohr1:Array=new Array (Gelb1_mc, Blau1_mc, Rot1_mc, Orange1_mc, Gruen1_mc]);
Auch wenn es geht, aber Klasen Instanziert man so:
var Gelb1_mc:BGelb = new BGelb();

BTW. Geht auch mit dem was ich gepostet hab, und ist auch noch kürzer ;-)
ActionScript:
1
2
3
4
5
6
7
var rohr1:Array = ["BGelb","BBlau","BRot","BOrange","BGruen"];
var zufall:uint = Math.floor(Math.random() * rohr1.length);
var c:Class = getDefinitionByName(rohr1[zufall]) as Class;
var mc:MovieClip = new c   as MovieClip;
addChild(mc) as MovieClip;
mc.x = 50;
mc.y = 50;
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
Geändert von RustyCake am 12.04.11 um 18:15 Uhr

 12.04.2011, 21:51Re12
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

danke für eure Unterstützung.

ich bekomme immer noch eine Fehlermeldung.

ReferenceError: Error #1065: Variable BBlau_mc ist nicht definiert.
   at global/flash.utils::getDefinitionByName()
   at spiel_fla::MainTimeline/frame1()


Entschuldigt mich für die dumme Fragen :/

.
Geändert von Zika.BentO am 12.04.11 um 21:52 Uhr

 12.04.2011, 22:56Re13
Benutzerbild von RustyCake
Beiträge: 1769
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

Nimm mal bitte das Script.
Stimmen den die Klassenbezeichner, mit dem Array überein?
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
 14.04.2011, 13:05Re14
Beiträge: 57
Registriert: Aug 2006

Ich hab dir auch mal was gebastelt :)

Ich hoffe die paar Kommentare im Script helfen dir weiter, wenn nicht, dann frag ;)

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
import fl.transitions.easing.*;
import fl.transitions.Tween;

var anzahl:Number = 4;
var zeit:Number = 5;


//Hier erstellen wir eine Menge "anzahl" an Bällen
for (var i:Number = 0; i < anzahl; i++) {
 
     this["ball"+i] = new Sprite();
     this["ball"+i].graphics.clear();
 
     //Hier werden die verschiedenen Farben definiert
   this["ball"+i].graphics.beginFill(Math.random()*(0xFFFFFF));
     
     //Zeichnen des Kreises
   this["ball"+i].graphics.drawCircle( 150 +75* i, 50, 25);
     this["ball"+i].graphics.endFill();
     
     //Und hier bringen wir unseren Ball auf die Bühne
   addChild(this["ball"+i]) as MovieClip;
}

//Hier wird lediglich der "Eimer" erstellt, in den die Bälle fallen sollen.
//Das funktioniert genauso, wie zuvor mit den Bällen. ^^
var rect:Sprite = new Sprite();
rect.graphics.clear();
rect.graphics.beginFill(0x000000);
rect.graphics.drawRect(100,300,325,100);
rect.graphics.endFill();
addChild(rect);

//Und das hier ist alles, was nötig ist, um die Bälle in den Eimer zu bewegen :D
for(var n:Number = 0; n < anzahl; n++){
     var myTween:Tween = new Tween(this["ball"+n],"y",Strong.easeIn,this["ball"+n].y, 350, zeit, true);
}


Du brauchst den Script nur in ein neues .fla-Dokument kopieren. Es werden keinerlei Objekte in der Library benötigt :D
Geändert von Solon am 14.04.11 um 13:18 Uhr

 16.04.2011, 11:54Re15
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

super!! es funktioniert jetzt ^_^
danke euch allen
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de