Moviclips zufällig abspielen lassen [Flash CS5]
| 06.02.2011, 23:51 | Re16 | Beiträge: 1769 Wohnort: Laimbach 6 1/2 Registriert: Nov 2002
| Ist in den MovieClips noch eine Timeline-Animation, die (Abwärts-Bewegung zb.)?
Mußte feststellen das das tierisch auf die Performance geht.Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen" | |
| 07.02.2011, 13:27 | Re17 | Beiträge: 61 Registriert: Dec 2010
Themenautor/in
| Ja in den Moviclips ist die Bewegung nach unten auf der Timeline, sonst nichts.
Performance ist erstmal egal, da ich so schnell noch nicht ans veröffentlichen denke. Ich möchte erstmal wissen, wie ich soetwas grundsätzlich mache. | |
| | | nicht sichtbar bei eingeloggten Mitgliedern |
|
| 07.02.2011, 15:26 | Re18 | Beiträge: 1769 Wohnort: Laimbach 6 1/2 Registriert: Nov 2002
| Aso. Ok.
Hab jetzt auf Grund diesen Threads, ja ein bisschen rumgebastelt, mein Sohn hat mich dazu gedrängt,
der hat immer gestestet, ;-)
Hab jetzt aber keine Clips mit Timeline-Animation mehr verwendet.
Was ist dabei heraus gekommen?
Bisschen mehr wie Du/ich wahrscheinlich wollten.
Timer ist klar, den hatte ich schon eingebaut.
Bei zunehmender Spieldauer, ist eine Erhöhung, des Spiele-Tempos drin, und der Abfangbalken wird kleiner,
der Skalierfaktor ist einstellbar, der speedFaktor auch.
Die Position und Geschwindigkeit der Clips ist auch Zufällig, lässt sich aber auch einstellen.
Textfeldausgabe für Spieldauer, gefangene Clips und durchgelassene Clips.
Startbutton gesperrt währen des Spiels.
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.display.MovieClip;
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"];
var arrayZaehler:uint = 0;
var holderMc:MovieClip = null;
var timerTicks:uint = 180;
var timerDelay:uint = 1000;
var timerRun:Boolean;
var hitMcScaleMode:Boolean = true;
var hitMcStartScale:Number = 110;
var hitMcEndScale:Number = 30;
var hitMcScale:Number;
var pauseZeit:uint;
var hitMcScaleFaktor:Number = (hitMcStartScale-hitMcEndScale)/timerTicks;
var speedFaktor:uint = 30;
var mcUnterGrenze:uint = 545;
var mcLinksX:uint = 5;
var mcRechtsX:uint = 540;
var hitMcXSpeed:uint = 8;
var hitMcXPos:Number = 0;
var mcY:Number = -15;
var hitMcMinX:uint = 50;
var hitMcMaxX:uint = 490;
var mcSpeed:uint;
var randSpeed:uint = 7;
var abgefangen:uint = 0;
var durchgelassen:uint = 0;
hit_mc.visible = false;
function initTimer ():void {
arrayZaehler = 0;
hitMcScale = hitMcStartScale;
pauseZeit = 2500;
mcSpeed = 1;
abgefangen = 0;
durchgelassen = 0;
hit_mc.width = hitMcScale;
hit_mc.visible = true;
holderMc = null;
timerRun = true;
holderMc = new MovieClip();
addChild (holderMc);
var holderMask:Sprite = new Sprite();
holderMask.x = holderMask.y = 5;
holderMask.graphics.beginFill (0xff0000);
holderMask.graphics.drawRect (0,0,540,530);
addChild (holderMask);
holderMc.mask = holderMask;
timer_txt.text = "Restspielzeit = 3:00";
durchgelassen_txt.text = " Clips durchgelassen = " + durchgelassen;
gefangen_txt.text = " Clips gefangen = " + abgefangen;
var timerInit:Timer = new Timer(timerDelay,timerTicks);
timerInit.addEventListener (TimerEvent.TIMER, timerHandler);
timerInit.addEventListener (TimerEvent.TIMER_COMPLETE, timerCompleteHandler);
timerInit.start ();
function timerHandler (event:TimerEvent):void {
if ((timerInit.currentCount%speedFaktor)==0) {
hitMcXSpeed += 1;
mcSpeed += 1;
}
pauseZeit -= 10;
hitMcMinX = Math.ceil(mcLinksX+(hitMcScale/2));
hitMcMaxX = Math.ceil(mcRechtsX-(hitMcScale/2));
if (hitMcScaleMode) {
hit_mc.width = (hitMcScale-= hitMcScaleFaktor);
}
var m:uint = Math.floor((timerTicks-timerInit.currentCount)/60);
var s:uint = (timerTicks-timerInit.currentCount)%60;
s >= 10 ? timer_txt.text = "Restspielzeit = " + m + ":" + s:timer_txt.text = "Restspielzeit = " + m + ":0" + s;
durchgelassen_txt.text = " Clips durchgelassen = " + durchgelassen;
gefangen_txt.text = " Clips gefangen = " + abgefangen;
event.updateAfterEvent ();
}
function timerCompleteHandler (e:TimerEvent):void {
timer_txt.text = "Spiel zu Ende";
timerRun = false;
while (holderMc.numChildren > 0) {
holderMc.getChildAt(0).removeEventListener (Event.ENTER_FRAME, oEF);
holderMc.removeChildAt (0);
}
stage.removeEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener (KeyboardEvent.KEY_UP, keyUpHandler);
timerInit.removeEventListener (TimerEvent.TIMER, timerHandler);
removeChild (holderMc);
removeChild(holderMask);
hit_mc.visible = false;
start_btn.mouseEnabled = true;
}
stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener (KeyboardEvent.KEY_UP, keyUpHandler);
initSort ();
}
function initSort ():void {
mcArray.sort (function () {return Math.floor(Math.random()*mcArray.length-1);});
startMc ();
}
function startMc ():void {
if (timerRun) {
if (arrayZaehler < mcArray.length) {
var c:Class = getDefinitionByName(mcArray[arrayZaehler]) as Class;
var mc:MovieClip = new c as MovieClip;
holderMc.addChild(mc) as MovieClip;
mc.x = Math.floor(Math.random() *(mcRechtsX-mc.width) + ((mc.width/2)+mcLinksX));
mc.y = mcY;
mc.randSpeedPlus = Math.ceil(Math.random() * randSpeed);
mc.addEventListener (Event.ENTER_FRAME, oEF);
arrayZaehler++;
setTimeout (startMc,pauseZeit);
} else {
arrayZaehler = 0;
initSort ();
}
}
}
function keyDownHandler (e:KeyboardEvent):void {
hit_mc.addEventListener (Event.ENTER_FRAME, hitWallMc);
if (e.keyCode == 37) {
hitMcXPos = - hitMcXSpeed;
} else if (e.keyCode == 39) {
hitMcXPos = + hitMcXSpeed;
}
e.updateAfterEvent ();
}
function keyUpHandler (e:KeyboardEvent):void {
hit_mc.removeEventListener (Event.ENTER_FRAME, hitWallMc);
}
function hitWallMc (e:Event):void {
e.currentTarget.x = Math.ceil(e.currentTarget.x += hitMcXPos);
if (e.currentTarget.x < hitMcMinX) {
e.currentTarget.x = hitMcMinX;
}
if (e.currentTarget.x > hitMcMaxX) {
e.currentTarget.x = hitMcMaxX;
}
}
function oEF (e:Event):void {
if (timerRun) {
var mcR:MovieClip = e.currentTarget as MovieClip;
mcR.y += (mcSpeed+mcR.randSpeedPlus);
mcR.rotation +=(mcSpeed+mcR.randSpeedPlus);
if (mcR.hitTestObject(hit_mc)) {
mcR.removeEventListener (Event.ENTER_FRAME, oEF);
holderMc.removeChild (mcR);
abgefangen++;
} else if (mcR.y >= mcUnterGrenze) {
mcR.removeEventListener (Event.ENTER_FRAME, oEF);
holderMc.removeChild (mcR);
durchgelassen++;
}
}
}
start_btn.buttonMode = true;
start_btn.addEventListener (MouseEvent.CLICK, startClickHandler);
function startClickHandler (e:MouseEvent):void {
start_btn.mouseEnabled = false;
initTimer ();
}
|
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen"
Angehängte Dateien:
| |
| 07.02.2011, 15:44 | Re19 | Beiträge: 61 Registriert: Dec 2010
Themenautor/in
| Besten Dank an deinen Sohn und natürlich auch an Dich ;-)
Da dürfte alles drin sein, was ich benötige! Außerdem hast du mich mit deinen zusätzlich eingebauten Dingen schon auf interessante Ideen gebracht, wie ich mein Spiel erweitern kann!
Jetzt bastel ich erstmal ein bisschen rum, mal schauen ob noch Fragen zu dem Script etc. auftauchen. | Geändert von grafikuser am 07.02.11 um 19:00 Uhr
| |
|
| 07.02.2011, 15:54 | Re20 | Beiträge: 1769 Wohnort: Laimbach 6 1/2 Registriert: Nov 2002
| OK. bin dann da ;-)Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen" | |
| | | nicht sichtbar bei eingeloggten Mitgliedern | 
|
| 08.02.2011, 16:41 | Re21 | Beiträge: 61 Registriert: Dec 2010
Themenautor/in
| Ich finds zwar schon fast unverschämt aber ich frags trotzdem ;-)
Wäre es möglich, dass du die Datei so modifizierst, dass nur noch folgende Komponenten drin sind.
- der Timer
- die herunterfallenden Objekte
- "Auffangen" der Moviclips mit dem Balken, also das Entfernen
- das beenden sobald der Timer abgelaufen ist.
Habe es selbst versucht die "überflüssigen" Elemente rauszuwerfen, aber hab dann immer Fehlermeldungen bekommen, dass dies und das nicht definiert wäre.
Der Rest verwirrt mich als nicht AS3 Profi derzeit leider noch. Aber ich weiss es natürlich zu schätzen, dass Du gleich ein umfangreicheres Script geschrieben hast, kann ich sicherlich in einiger Zeit, wenn ich meine AS3 Kenntnisse hoffentlich erweitert habe, nutzen...
Und noch was: Korrigiere mich wenn ich falsch liege, aber ich habe in deinem Script nirgends eine Antwort darauf gefunden, wie ich die dynamisch erstellten Moviclips hinter einen anderen, nicht dynamisch erstellten Moviclip bringe. (also in einem Spiel, den Auffangbalken vor die Quadrate) | Geändert von grafikuser am 08.02.11 um 16:44 Uhr
| |
|
| 08.02.2011, 23:41 | Re22 | Beiträge: 1769 Wohnort: Laimbach 6 1/2 Registriert: Nov 2002
| Das erste verstehe ich nicht, was soll ich da raus nehmen?
Letztes ist swapChildren(movie2, movie2).Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muss erst gehen lernen" | |
| 09.02.2011, 14:50 | Re23 | Beiträge: 61 Registriert: Dec 2010
Themenautor/in
| Das mit dem rausnehmen hat sich erledigt, habe mir das Script nochmal intensiv angesehen, und blick jetzt weitestgehend durch ;-)
Frage(n) nun vollumfassend beantwortet! | |
| | Themen Ähnliche Beiträge zum Thema | 06.07.2010 - Fabl_ 05.12.2010 - dirkwald 24.12.2009 - Agent154 21.01.2010 - OTurner |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|