Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Computer hängt“

S

shadow_eye

Guest

Ich habe ein Problem mimt meinem Flash MX:

Ich habe einen Film erstellt, bei dem zur Laufzeit ein berechnetes Bild gezeichnet wird.
Dazu habe ich einen Punkt als Movieclip, der dubliziert (duplicateMovieClip) und dann an die korrekte Position verschoben wird.
Das Problem ist nun, dass zwar alles korrekt funktioniert, aber mein Computer ab ca. 500
Objekten hängt.
Wie kann ich nun dafür sorgen, dass meinet wegen erstmal das bis dahin erstellte gezeigt wird?
Würde das mit einer Abwarteschleife gehen?
Oder habt ihr noch andere Vorschläge?

:?:
 

h_seldon

Aktives Mitglied

Hallo,

kannst Du etwas genauere Angaben zum Aufbau Deines Films und des Skripts machen? Vielleicht gibt es eine Endlosschleife in einem Skript? Oder Deine keine Ahnung wievielen Objekte sind schlicht zuviel für Flash? Die Performance von Flash ist nämlich bei einer großen Anzahl von Objekten nicht besonders gut.

Eventuell gibt es auch eine andere Lösung, bei der man auf duplicateMovieClip verzichten kann, aber dazu müßte man eben mehr über Deinen Film wissen.

Viel Spaß
 

mammimonstA

grauhliebe

h_seldon schrieb:
Hallo,

kannst Du etwas genauere Angaben zum Aufbau Deines Films und des Skripts machen? Vielleicht gibt es eine Endlosschleife in einem Skript? Oder Deine keine Ahnung wievielen Objekte sind schlicht zuviel für Flash? Die Performance von Flash ist nämlich bei einer großen Anzahl von Objekten nicht besonders gut.

Eventuell gibt es auch eine andere Lösung, bei der man auf duplicateMovieClip verzichten kann, aber dazu müßte man eben mehr über Deinen Film wissen.

Viel Spaß

Ich antworte mal im Namen von shadow_eye, da er mit seinem 56k Modem Geschwindigkeits und Kostenprobleme hat :wink:

Sein Film zeichnet im Prinzip die Linie, die ein mehrfach gefaltetes Blatt Papier beschreibt, welche man als ein Fraktal ansehen kann. Er hat keine Endlosschleife, sondern dupliziert um annähernd eine linie zu erhalten, in einer whileschleife andauernd seinen Movieclip Punkt, der tatsächlich nur ein Punkt ist.

LG,
Kevin
 

h_seldon

Aktives Mitglied

Hallo mammimonstA/shadow_eye,

eventuell ist es sinnvoller, mit den Zeichnungsmethoden der MovieClip-
Klasse zu arbeiten. Falls die while-Schleife keine Endlosschleife
produziert, scheint es tatsächlich ein Performance-Problem aufgrund
des duplicateMovieClip() zu sein.

Abhängig von der Komplexität der Grafik, die nachgezeichnet werden
soll, könnte eine Lösung folgendermaßen aussehen:

Mit Hilfe einer Pfadanimation wird das Objekt durch einen leeren
MovieClip nachgezeichnet. Pro Frame/pro selbst gewähltem Interval
wird an die aktuelle Position des leeren MovieClips mit lineTo eine Linie
gezeichnet. Zu sehen ist dann ein sich aus Einzelstrichen aufbauendes
Bild. Das mühsame Setzen/Duplizieren von MCs entfällt damit, die
Performance ist selbst bei komplexen Objekten in Ordnung.

Konkret:
- erstelle auf _root drei Ebenen "actions","pfad","pfadani";
- erstelle auf "pfad" einen nicht geschlossenen Pfad, der die zu
zeichnende Grafik nachbildet
- erstelle auf "pfadani" einen leeren MovieClip mit dem
Instanznamen "m"
- verlängere die Frames in "pfadani" und "pfad" um die gewünschte
Frameanzahl, z.B. bis Frame 180 (ergibt bei 18 bps eine Animation von
10 Sek). Das letzte Bild in "pfad" ist ein Bild, in "pfadani" ein Schlüsselbild
- aktiviere den Magneten in der Symbolleiste (Fenster - Symbolleisten - Standard - Magnetsymbol)
- weise Frame 1 auf "pfadani" ein bewegungstween zu
- verschiebe den leeren mc in Frame 1 und im letzten Frame auf den Pfadbeginn bzw. das Pfadende
- schreibe folgendes Bildskript, Frame 1, _root, Ebene "actions":

//erstellt leren mc zum Zeichnen
this.createEmptyMovieClip("z",1);
//definiert Linieneigenschaften
z.lineStyle(1,0xffaa00,100);
//setzt den Beginn der Zeichnung auf die Position des leeren mc
z.moveTo(m._x,m._y);
//weist dem mc, mit dem gezeichnet wird, ein permanentes Ereignis zu
z.onEnterFrame = function(){
//zeichnet eine Linie zur aktuellen Position des leeren mc
z.lineTo(m._x, m._y);
//fragt ab, ob bereits der letzte Frame der Animation erreicht wurde
if(_root._currentframe == _root._totalframes){
//falls ja, stoppt das Nachzeichnen
_root.stop();
//das enterFrame wird nicht mehr benötigt und daher gelöscht
delete this.onEnterFrame;
}
}

Alternativ zu einem enterFrame kann man auch mit einem setInterval
arbeiten. Je höher das Zeichnen-Tempo, desto sauberer wirkt nachher
natürlich die Zeichnung.

Wenn die Zeichnung komplexer ist, sich also nicht durch einen offenen Pfad nachzeichnen läßt, dann muß die Pfadanimation in einzelne Teile aufgesplittet werden.

Hoffentlich habe ich auch wirklich verstanden, was ihr vorhabt. Falls nicht, vielleicht könnt ihr mal einen Screenshot posten?

Viel Spaß
 

schinki

Aktives Mitglied

Hi,

stimme h_seldon zu.
Würde auch per Action Script zeichnen.
Eine einfache Funktion mit setInterval in der Ihr nur von aussen die Koordinaten bestimmen müsst und sie zeichnent los.

Das spart erheblich Performence und ihr seid zeitlich nicht mehr von den Frames/Sekunde abhängig.


LG Schinki
 
S

shadow_eye

Guest

Danke für die Informationen, das ist ja wunderbar.
Werde ich demnächst mal verwenden.

Allerdings, das Problem besteht leider weiterhin.
Die Graphik ist zu Beginn der Laufzeit noch nicht bekannt, weil die Graphik erst noch in einer Funktion berechnet werden muss.
Ich habe keine Endlosschleife darin.
Wenn sich jemand für diese Funktion interessiert, kann ich ja mal ein Tutorial schreiben.

Aber nachzeichnen kann ich meine Graphik leider nicht.

Das gesamte Projekt mache ich auch nur, weil ich wissen möchte, wie so ein Papierstreifen nach xmaligem falten aussieht.

Trotzdem danke
 

h_seldon

Aktives Mitglied

Hallo,

wenn die Grafik errechnet werden muß, so gibt es doch einen Zeitpunkt, ab dem sie bekannt ist - andernfalls könntest Du keine MCs duplizieren. Auch in dem Fall kannst Du mit den Zeichnungsmethoden der MovieClip-Klasse arbeiten. Anstelle eines duplicate führst Du eben einfach ein mc.lineTo() aus, gegebenenfalls unterbrochen von einem moveTo(), falls keine durchgängige Linie gewünscht ist. Ich vermute mal, daß damit das Performance-Problem gelindert werden könnte.

Viel Spaß
 
S

shadow_eye

Guest

Danke, ich werde es mal so versuchen, auch wenn ich das jetzt nicht wirklich zu 100% verstanden habe, aber es wird schon irgentwie werden.
?
Ich meine nur:
Die Graphik ist eine offene Linie (Linie ist gut! :lol: ), bei der lediglich der Verlauf von "rechts"/"links" errechtet wird.
Wie ich das jetzt umsetzte, ist mir noch ein Rätsel, es sind aber auch bald Ferien!

Wenn ihr wollt, könnt ihr jetzt nochmal einen Tipp posten, müsst aber nicht.

Auf jeden Fall danke, war eine große Hilfe.

:D
 

h_seldon

Aktives Mitglied

Hallo,

auch Farbverläufe können per Skripting definiert werden: beginGradienFill(ca. 100 Parameter). Aber vielleicht postest Du einfach die fla (vielleicht sogar mit Kommentar, was die Orientierung erleichtern würde) oder einen Screenshot von den duplizierten MCs, so daß man einen visuellen Eindruck gewinnt, was man eventuell optimieren könnte.

Viel Spaß
 
S

shadow_eye

Guest

Screenshot? Meinetwegen, ich will euch aber nicht zuviel arbeit machen!

hm, bin wohl etwas zu blöd, um hier etwas einzufügen.
Naja, stell dir einfach mal eine .fla mit sehr, sehr vielen Punkten vor. Nur Punkte. Viele Punkte. Ziemlich viele Punkte. Eigentlich Kreise mit 1 px Durchmesser.
randommäßig angeordnet.

Diese Anordnung bekomme ich noch hin.
Jedoch sind die Punkte zuwenige, um sie in einer Linie anzuordnen.
Es würde natürlich gehen, aber mein Objekt wäre nicht zu erkennen.

Nun zu dem Objekt:
Es gibt in dem Script eine (noch nicht geschriebene aber fertig entworfene und gut durchdachte) Funktion, die so ungefähr folgendes in einem array ausspuckt:
llrlllrrllrlllrrrlllrllrrrllrrrlrrllrrrlr etc....

Dabei steht r für rechts und l für links.
Nun soll folgendes passieren:
Es sollen zum Beispiel 10 Punkte aneinandergelagert werden, dann kommt das nächste rechts oder eben links.
Dieses Script steht auch schon in meinem Kopf.

Mein Problem ist jetzt nur, dass bei 500 P. und mehr mein Rechner nicht mehr mitmacht.

Euren Tipp mit dem Zeichnen habe ich zwar keum verstanden, um ehrlich zu sein, aber wozu gibt es eine ziemlich gute Hilfefunktion in Flash.

Wenn ihr sonst noch Tipps habt, könnt ihr das ruhig sagen, ich würde mich freuen.
Am besten mal als PM, weil ich jetzt erst mal eine Woche keine Zeit habe.
PMs gehen nicht verloren, oder?
Danke


:D [/img]
 

h_seldon

Aktives Mitglied

Hallo,

wieviele Punkte brauchst Du insgesamt? Müssen die Punkte auf einmal (Schleife) oder nacheinander gesetzt werden?

Viel Spaß
 
S

shadow_eye

Guest

Gesamtpunktzahl?
Also, da kommt einiges zusammen, wenn man am Ende etwas erkennen will.
Wie gesagt, es geht um gefaltete Papierstreifen.
Dieses Bild wird errechnet.
Je öfter ich ihn falten möchte, desto mehr Punkte brauche ich (leider nicht proportional!)
allein die Punkte, bei denen die Linie abbiegt, sind folgende Anzahl:
x...Faltungen
y=2^x-1
dazu kommen die Punkte, die die Linie bilden:
*linienlänge, z.B. 10.

Mein Ziel ist es, eine 30fache faltung darzustellen, also wären das:
10.737.418.230 Punkte!

verdammt viel!

Vielleicht sollte ich es anders versuchen, aber wie?
 

h_seldon

Aktives Mitglied

Hallo,

Hupps, klingt ja nach so viel, daß man die Zahl nicht mehr aussprechen kann.

Allerdings wirst Du vielleicht doch nicht soviele Punkte zeichnen müssen. Bei einer Größe von 800x600 müßten, um den Screen zu zeichnen, 480000 Punkte dargestellt werden. Außerdem wird die Grafik nicht bildschirmfüllend dargestellt, oder? Zudem: vielleicht kann man auch in Einzelfällen eine Linie statt eines einzelnen Punkts zeichnen.

Nun kann man zwar in Flash MX zwar nicht auf einen Rutsch soviele Punkte zeichnen, aber man kann es splitten, etwa per setInterval.

Kannst Du vielleicht mal beschreiben, wie die Anwendung aussehen soll, wenn man sie startet? Was ist dann zu sehen?

Viel Spaß
 
S

shadow_eye

Guest

Also:
Es ist folgendes zu sehen:
1.Bild: Billiges Eingabefeld für die globale Variable Faltiungen; Button zum Bestätigen.
2.Bild: ein Punkt 0, der dubliziert wird, weil sofort die Funktion losgeht.

Ich sehe übrigens nicht mal die Punkte einzeln auftauchen, sondern dieses Bild wird erst gezeigt, wenn die Punkte schon stehen. (Die Funktion fertig ist)

Vielleicht sin 30 Faltungen auch etwas übertrieben, ich wäre für den Anfang auch mit 20 zufrieden, aber meine Meinung ist, dass dann auch 30 funktionieren müssten.

P.S.: Die Zahl lautet Zehnmilliardensiebenhundertsiebenunddreißigmillionenvierhundertachzehntausendzweihundertunddreißig!

(Für Leute, die so etwas interressiert.)

:D
 

h_seldon

Aktives Mitglied

Hallo,

es werden also die beispielsweise 30 Faltungen erst errechnet, dann wird das fertige Bild gezeichnet? Mit anderen Worten: man sieht das Ergebnis aller Faltungsprozesse, nicht aber jeweils Faltung 1, dann Faltung 2 usw. Falls das korrekt ist, dann muß man [hoffentlich-nicht-voreilig-aus-Erleichterung-Schweiß-von-der-Stirn-wisch] wohl doch keine milli-plus-unaussprechlich-viele Punkte darstellen, sondern eben soviele, wie maximal auf den Screen passen. Wenn diese Punkte nicht einzeln gesetzt werden müssen und man ab und zu auch mal eine Linie zeichnen kann, dann könnte es mit den Zeichnungsmethoden klappen. Wenn man allerdings tatsächlich Pixel für Pixel setzen muß, dann wirst Du selbst bei weniger als milli-plus-unaussprechlich-vielen Punkten in Flash MX (das war doch die Version, oder?) Performanceprobleme bekommen.

Vielleicht klappt es doch irgendwie mit einem Screenshot oder einem scribble, dann würde es uns einfacher fallen, festzustellen, was machbar ist und was nicht?

Viel Spaß
 
S

shadow_eye

Guest

Mensch, ihr gebt echt nicht auf mit mir, ich danke.
Jedenfalls...
Mich kotzt mein Projekt nun schon selbst an.
:oops:
Ich werde nur meine l/r - Funktion verwenden und den Rest erledige ich auf einem Blatt Millimeterpapier!

Das ist mir echt zu umständlich, aber trotzdem danke.

Du bist echt unverwüstlich!
Vielleicht sollte man mal den schinki fragen, ob er dir einige Extrapunkte wegen vorbildlicher Hilfe hier gibt, verdient hättest du es wirklich.

Über die Zeichenmethoden werde ich mich trotz allem mal informieren, wenn ich Zeit habe, ansonsten gehts jetzt in den Urlaub, weit weg von Flash!

:D
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.155
Beiträge
2.581.858
Mitglieder
67.222
Neuestes Mitglied
Gregor
Oben