Elemente von der Bilbliothek per Zufall auf die Bühne einfügen und animieren [Flash 10]
| 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 :) | |
| 11.04.2011, 17:04 | Re1 | 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,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten. | |
| 11.04.2011, 17:08 | Re2 | 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:15 | Re3 | 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:41 | Re4 | 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:12 | Re5 | 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 Mitgliedern | 
|
| 11.04.2011, 18:16 | Re6 | Beiträge: 11 Registriert: Mar 2011
Themenautor/in
| klassssse!!
vielen vielen vielen Dank, ich werde das mal ausprobieren. Danke nochmal :) | |
| 11.04.2011, 19:59 | Re7 | 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:56 | Re8 | 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:21 | Re9 | 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,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten. | |
| 12.04.2011, 13:25 | Re10 | 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:56 | Re11 | 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:51 | Re12 | 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:56 | Re13 | 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:05 | Re14 | 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:54 | Re15 | Beiträge: 11 Registriert: Mar 2011
Themenautor/in
| super!! es funktioniert jetzt ^_^
danke euch allen | |
| | Themen Ähnliche Beiträge zum Thema | 10.12.2009 - shrekisback 09.11.2009 - Roflcopta 05.10.2009 - tilt303 16.04.2011 - Zika.BentO |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|