1&1 Webhosting
Flashhilfe.de - Flash Community

Moviclips zufällig abspielen lassen [Flash CS5]

Forum > Flash Script und Tutorial Gesuche > Moviclips zufällig abspielen lassen

 


AntwortenRegistrieren Seite1 2  

 06.02.2011, 23:51Re16
Benutzerbild von RustyCake
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:27Re17
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:26Re18
Benutzerbild von RustyCake
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:
Adobe Flash Quelldatei vertikal_addRandom_Timer_oEF_AS3.fla19.18 KB
 07.02.2011, 15:44Re19
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:54Re20
Benutzerbild von RustyCake
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 Mitgliedern1&1 Webhosting
 08.02.2011, 16:41Re21
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:41Re22
Benutzerbild von RustyCake
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:50Re23
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
 

AntwortenRegistrieren Seite1 2  

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