Flashhilfe.de - Flash Community

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

 


AntwortenRegistrieren Seite1  

Zika.BentO#1
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

11.04.2011, 14:53

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
Kerstin77#2
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

11.04.2011, 17:04

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.
Zika.BentO#3
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

11.04.2011, 17:08

Vielen Dank Kerstin77, werd mir das mal anschauen :)
Geändert von Zika.BentO am 11.04.11 um 17:10 Uhr
Sleepingbeast#4
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

11.04.2011, 17:15

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'
Zika.BentO#5
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

11.04.2011, 17:41

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 :/
Sleepingbeast#6
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

11.04.2011, 18:12

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'
Zika.BentO#7
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

11.04.2011, 18:16

klassssse!!

vielen vielen vielen Dank, ich werde das mal ausprobieren. Danke nochmal :)
RustyCake#8
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

11.04.2011, 19:59

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"
Zika.BentO#9
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

11.04.2011, 20:56

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 :/
Kerstin77#10
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

11.04.2011, 23:21

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.
Zika.BentO#11
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

12.04.2011, 13:25

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
RustyCake#12
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

12.04.2011, 17:56

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
Zika.BentO#13
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

12.04.2011, 21:51

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
RustyCake#14
Benutzerbild von RustyCake
Beiträge: 1776
Wohnort: Laimbach 6 1/2
Registriert: Nov 2002

12.04.2011, 22:56

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"
Solon#15
Benutzerbild von Solon
Beiträge: 57
Registriert: Aug 2006

14.04.2011, 13:05

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
Zika.BentO#16
Benutzerbild von Zika.BentO
Beiträge: 11
Registriert: Mar 2011

Themenautor/in

16.04.2011, 11:54

super!! es funktioniert jetzt ^_^
danke euch allen

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-2022 Sebastian Wichmann - Flashhilfe.de