Thema: SM 3 oder MiniSM3? |
|
|
| Zitat: |
Original von Chanel
Es geht noch billiger und zwar hier. |
Warum habe ich wohl schon v or 2 Tagen gewusst, dass so ein Beitrag kommen wird.
Jörg und Diana, schreibt doch direkt, dass Ihr Swish-Mini und andere Swish-Produkte verkaufen wollt und langweilt das Forum nicht mit so einem scheinheiligen Beitrag.
|
|
Thema: Objektbewegen per Script |
Dodo
| Antworten: |
49 |
| Hits: |
2.509 |
|
|
| Zitat: |
Original von Robin
Um zu zeigen das ich nicht untätig war, habe ich meine "Verständnisübung" angehängt. |
|
|
Thema: Objektbewegen per Script |
Dodo
| Antworten: |
49 |
| Hits: |
2.509 |
|
|
Durch etwas Nachdenken bin ich drauf gekommen, dass man die Sinuskurve ja auch mit einer for-Schleife zeichnen kann. Eine for-Schleife wird komplett in einem einzigen Frame abgearbeitet und und die Kurve erscheint komplett in einem Stück.
Ich habe es jetzt so in einem Prototypen umgesetzt:
1. Zeichnen der Sinuskurve mit einer for-Schleife
2. Entlangfahren eines Objekts (hier stern) an der Sinuskurve mit onEnterFrame
Die Datei im Anhang ist in SM2 erstellt.
|
|
Thema: Objektbewegen per Script |
Dodo
| Antworten: |
49 |
| Hits: |
2.509 |
|
|
Die zuvor von mir geposteten Beispiele funktionieren alle so, dass bei jedem Eintritt in einen Frame die Gradzahl verändert und daraus die neue Position berechnet und mit lineTo eine Linie von der vorherigen zur neuen Position gezogen wird, Dadurch ergibt sich eine Kurve. Diese Methode ist natürlich langsam, weil eine bestimmte Anzahl Frames benötigt wird um die Kurve fertig zu stellen. Der Vorteil ist, dass jede einzelne Position dieser Kurve bekannt ist und man z.B. ein Objekt an dieser Kurve entlang fahren lassen kann.
So eine Kurve lässt sich auch in einem einzigen Frame erstellen, sozusagen blitzartig und zwar mit curveTo. Der Nachteil ist, dass man nur Start- und Endpunkt der Kurve, nicht aber die dazwischen liegenden Koordinaten kennt. Das macht es logischerweise schwierig, so eine Kurve mit einem Objekt abzufahren, wie Robin es gerne möchte.
Ich habe vor einiger Zeit ein kleines Tool erstellt, mit dem man curveTo schön demonstrieren kann. Das Teil ist in der praktischen Arbeit entstanden und zwar habe ich für die Uni Düsseldorf mal ein Swish-Programm erstellt, mit dem der Sauerstoffverbrauch von Ratten-Leberzellen in einem Subrat (Glutamat oder Succinat) simuliert werden konnte. Durch Zugabe von Adenosindiphosphat (ADP) erhöht sich der Sauerstoffverbrauch und dieser Verlauf wurde mit Swish in einem Diagramm dargestellt. Anfangs war das eine Gerade, die mit der Zugabe von ADP begann und endete, wenn das ADP verbraucht war. Nun ist es aber so, dass die Wirkung von ADP nicht schlagartig, sondern verzögert einsetzt und ebenso verzögert ausläuft. Deshalb wollte man auch keine Gerade in dem Diagramm sondern eine Welle. Leider konnte mir niemand sagen, wie so etwas zu berechnen ist. Ich habe daraufhin das Tool entwickelt und dem Auftraggeber gesagt, formt die Welle so, wie ihr sie haben möchtet und teilt mir einfach die Werte mit. Wenn ich mich richtig erinnere, haben wir uns dann auf Schnitt = 50, x = 75 und y = 25 geeinigt. Das hält zwar keiner wissenschaftlichen Überprüfung statt, für die Simulation reichte das aber völlig aus und wenn dadurch tatsächlich Laborversuche eingespart wurden, hat es einigen Ratten das Leben gerettet.
Das Swish-Programm (nicht das kleine Tool) stellte den kompletten Laborversuch in Echtzeit über eine Dauer von 20 Minuten dar. Das Diagramm wird entsprechend dynamisch gezeichnet. Außer ADP konnten noch DNP und KCN (Zyankali) zugegeben werden mit unterschiedlichen Auswirkungen auf die zu zeichnende Kurve. Zyankali beendete den Sauerstoffverbrauch sofort, weil die Zellen abstarben. Das stellte sich im Diagramm dann als eine waagerechte Gerade dar.
An den Auftrag und einige folgende bin ich durch eine Userin aus unserem Vorgängerboard gekommen, die für die Uni Düsseldorf als freie Mitarbeiterin/Dozentin tätig ist. Es hat Spaß gemacht, Swish einmal anders als üblich einzusetzen, obwohl es sicher andere, besser geeignete Programmiersprachen für das Projekt gegeben hätte.
Das Tool ist im Anhang und wurde mit SM2 erstellt.
Weiter ist im Anhang ein Screenshot des kompletten Diagramms, die Datei selber kann ich nicht zur Verfügung stellen, da es eine Auftragsarbeit war.
|
|
Thema: Objektbewegen per Script |
Dodo
| Antworten: |
49 |
| Hits: |
2.509 |
|
|
| Zitat: |
Original von Robin
Ich zeichne mir eine Sinuskurve auf die Bühne, zeichne dann einen "dicken Punkt" dazu, das ist dann mein MovieClip und dieser soll per Script über die Sinuskurve fahren. Dann möchte ich nur durch veränderen eines Parameters die Amplitudenhöhe der Sinuskurve verändern und der "dicke Punkt" soll dann entsprechend über die neue Sinuskurve fahren. |
So eine Sinuskurve nur mit Halbkreisen zu erzeugen, sieht nicht so gut aus. Man kann so eine Kurve natürlich auch berechnen.
| code: |
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:
|
onSelfEvent (load) {
// radius = Höhe
// tempo = Weite - je kleiner, desto weiter
// anzahl = Wiederholungen
MovieClip.prototype.skurve=function(radius:Number,tempo:Number,anzahl:Number) {
this.onEnterFrame=function() {
this.lineStyle(1, 0xFF0000, 100);
dx = 0;
dy = 0;
winkel = 0;
this.moveTo(dx,dy);
this.onEnterFrame = function() {
winkel += tempo;
dy = Math.sin(winkel*Math.PI/180)*radius;
dx++;
this.lineTo(dx, dy);
if (winkel%(anzahl*360) == 0) {
delete this.onEnterFrame;
}
};
}
}
//Anwendung
box.skurve(150,4,5);
}
|
|
Für SM3 habe ich die Datei angehängt. Für SM2 einfach den Code kopieren und einen MC "box" erzeugen.
In eigener Sache:
Ich bin öfter hier als man evtl. denkt. Ich lese als Gast fleißig mit und wenn ich etwas in meinem Fundus habe, was hilfreich sein könnte, melde ich mich schon.
Nur ich poste das dann so wie es ist, mundgerecht aufbereiten wie in alten Zeiten, das mache ich nicht mehr.
In ein paar Tagen werde ich 67, da tritt man schon etwas kürzer
Dodo
|
|
Thema: Objektbewegen per Script |
Dodo
| Antworten: |
49 |
| Hits: |
2.509 |
|
|
Das kannst Du durch Berechnung einer Kreisbahn erreichen
| code: |
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:
|
onSelfEvent (load) {
// centX = X-Mittelpunkt
// centY = Y-Mittelpunkt
// rad = Radius
// step = gradzahl Bewegung
// n = Startposition in Grad, 90 = limks, -90 =rechts, 0 = oben, 180 = unten
MovieClip.prototype.Halbkreis=function(centX:Number,centY:Number,rad:Number,step:Number,n:Number) {
this.onEnterFrame=function() {
tx = centX - (Math.sindeg(n)*rad);
// Kreisberechnung X
ty = centY - (Math.cosdeg(n)*rad);
// Kreisberechnung Y
this._x = tx;
// MC bewegen nach x
this._y = ty;
// MC bewegen nach y
n -= step;
// Gradzaehler um Schrittweite ändern
if (n <= -90) {
// nach 180 Grad stop
delete this.onEnterFrame;
}
}
}
stern.halbkreis(250,250,200,2,90);
}
|
|
Vielleicht nützt es Dir
Edit: falls Du kein SM3 hast, bracust Du nur den Code kopieren und einen MC "stern" erstellen, das ist alles. Koordinaten von "stern" am besten x = 50 und y = 250, dann ist er auf der Startposition
|
|
Thema: Bewegung mit Script |
|
|
Setze bitte statt Deines Codes dieses hier ein:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
onSelfEvent (load) {
MovieClip.prototype.MoveX=function(vx:Number,vb:Number) {
this.onEnterFrame=function() {
this._x = Math.approach(this._x, vx, vb);
if(Math.abs(vx - this._x) <= 1) {
delete this.onEnterFrame;
this._x = vx;
}
}
}
//Anwendung
w.MoveX(500,0.8);
} |
|
Dadurch wird Dein MC "w" nach x 500 bewegt. Math.approach sorgt für ein sanftes Abbremsen. Wenn w auf x500 angekommen ist, wird onEnterFrame gelöscht, damit nicht unnötig Ressourcen verbraucht werden.
Die Parameter:
vx = 500 = die x-Position
vb = 0,8 = Beschleunigung bzw. Abbremsung
|
|
Thema: swf-transparent |
|
|
| Zitat: |
Original von Charly
.... hast du dazu genauere Informatioen oder weißt du wo ich solche finden kann.
|
Gib einfach wmode bei Google ein, dann hast Du jede Menge Lesestoff.
|
|
Thema: swf-transparent |
|
|
| Zitat: |
Original von Charly
..... oder muss ich hierfür einen anderen Code verwenden? |
am besten gar keinen. Der transparente Modus gilt als extrem fehlerhaft und kann mit fast allen Browsern zu unerwarteten Ergebnissen führen.
Solange ich mich mit Swish beschäftige, habe ich nur Kommentare gelesen, die von der Verwendung driungend abraten.
|
|
Thema: Easy PHP |
Dodo
| Antworten: |
11 |
| Hits: |
1.145 |
|
|
ich habe bisher den Wamp-Server benutzt
http://www.wampserver.com/
Dort stört mich eigentlich nur, dass es ein wenig kompliziert ist, ein eigenes www-Verzeichnis festzulegen. Ich habe das jetzt einmal bei Easy-PHP getestet und dort funktionierte es auf Anhieb.
|
|
Thema: Swishertreffen 2010 |
Dodo
| Antworten: |
25 |
| Hits: |
2.177 |
|
|
Wer schon mal mit viel Mühe ein Treffen vorbereitet hat und hinterher mit 3 Personen dasteht, kann den Beitrag von Cortex verstehen und ihm nur zustimmen.
Ich habe das gleiche mit dem Vorgängerforum erlebt, der einzige Unterschied bestand darin, dass wir 4 Leute waren, Falco, Henry und ich und im Laufe des Abends kam noch jemand dazu. Aber was noch schlimmer war, nichtmal der damalige Betreiber und Administrator des Forums ist erschienen. Wenn mich nicht alles täuscht, hat ihn genau die Dame damals davon abgehalten, die heute die Frechheit besitzt, hier ins Forum zu erbrechen.
Ich wünsche Iseye bei seinem Vorhaben viel Erfolg.
|
|
Thema: loadmovie mit Prüfung |
|
|
Hallo McBabba,
nimm statt loadMovie den MovieClipLoader, dann geht alles ganz einfach. Ich zitiere mpup aus einem anderen Thema, daran lässt sich das sehr gut erklären:
| Zitat: |
Original von mpup
| code: |
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:
|
function loadPicResized(url){
myL = new MovieClipLoader();
myL.onLoadInit = function(target){ // fertig geladen. mach mit dem bild was du willst. :D
sca = target._width / _parent.groesse._width;
target._width /= sca;
target._height /= sca;
target._parent.tf.text = "";
target._x = _parent.groesse._x;
target._y = _parent.groesse._height /2 - target._height /2;
};
myL.onLoadProgress = function(target, loadedBytes, totalBytes) { // während des ladens.....
loaded = Math.round(100/totalBytes*loadedBytes);
target._parent.tf.text = loaded + " %";
};
myL.onLoadError = function(target, errorCode) {
switch (errorCode) {
case 'URLNotFound' :
target._parent.tf.text = "Das Bild ist nicht verfügbar.";
break;
case 'LoadNeverCompleted' :
target._parent.tf.text = "Das Bild konnte nicht zuende geladen werden";
break;
};
};
myL.loadClip(url,halter);
}
|
|
|
myL ist einfach nur ein Name, den man vergeben muss, könnte auch Hugo oder Emil sein.
Unter onLoadInit kann man das geladene Bild manipulieren (Grösse, Position, Alpha, zentrieren usw) ohne noch irgendwo umständlich abfragen zu müssen, ob das Bild auch tatsächlich schon geladen wurde.
Unter onLoadProgress kann man den Ladezustand beobachten und idealerweise hier eine entsprechende Preloader-Anzeige einfügen.
Unter onLoadError wird abgehandelt, was passieren soll, wenn das Laden nicht erfolgreich war. Das ist das was Du suchst, hier kannst Du dann was ausblenden.
Hier der Link zu den Livedocs
Hier der Link zum Thema mit dem Originalbeitrag von mpup. Dort findet sich auch ein passendes Beispiel.
Gruss
Dodo
|
|
Thema: mitteilung ein - ausblenden...? |
|
|
Beim Aufruf der Seite
| code: |
1:
2:
3:
|
onSelfEvent (load) {
mitteilung._visible = true
} |
|
Du kannst das auch einem weiteren Button oder irgendeinem Ereignis zuordnen und die Mitteilung beliebig sichtbar bzw. unsichtbar machen.
|
|
Thema: mitteilung ein - ausblenden...? |
|
|
lege einfach auf den Button
| code: |
1:
2:
3:
|
on (release) {
this._visible = false
} |
|
dann wird es unsichtbar. mit "true" kannst Du es dann wieder sichtbar machen
|
|
Thema: Preloader für externe Bilder |
Dodo
| Antworten: |
64 |
| Hits: |
3.522 |
|
|
@iseye
Es hat schon seinen Grund mit dem onLoadInit. Definiert sind sie beiden Listener ja so:
• Wenn die geladene Datei vollständig auf der Festplatte gespeichert ist, wird der Listener MovieClipLoader.onLoadComplete aufgerufen.
• Nach der Ausführung der ersten Bildaktionen der heruntergeladenen Datei wird der Listener MovieClipLoader.onLoadInit aufgerufen.Wenn MovieClipLoader.onLoadInit aufgerufen wurde, können Sie Eigenschaften festlegen, Methoden verwenden und mit dem geladenen Film anderweitig interagieren.
Wenn Du Dir das Original von Steff ansiehst, wirst Du feststellen, dass er nicht nur externe Bilder oder swf’s geladen hat, sondern diese auch ein- und überblendet hat. Das wird also höchstwahrscheinlich noch dazukommen, wenn er mit der zur Verfügung gestellten swi weitermacht. Dann genügt es nicht, dass die Datei komplett geladen ist, der Movieclip muss auch initialisiert sein. Jetzt könnte man natürlich Prozente, Ladebalken und solche Dinge über onLoadComplete abhandeln und die Manipulationen mit dem Movieclip über onLoadInit. Ich vermute aber mal, dass der Steff noch bestimmte Vorstellungen über die Reihenfolge hat, z.B. wann soll der Ladebalken genau verschwinden (nach dem Ausblenden aber vor dem Einblenden) und deshalb ist die Geschichte in diesem Fall besser im onLoadInit aufgehoben.
@steff
Ich lache nicht über Dich und ich verzichte vorsichtshalber auf das Pferd. Es ist nur folgendes: Was Du verwirklichen willst, ist mit Script xmal leichter zu lösen als ohne. Der Einstieg ist natürlich schwer, das weiß ich auch aber auf Dauer profitierst Du davon.
Je größer ein Projekt wird, desto umständlicher ist es, mit der Timeline zu arbeiten. Da geht es mir genau umgekehrt wie Dir, in Deinem zuerst gepostetem Original habe ich ewig lange gesucht, bis ich entscheidende Dinge überhaupt erstmal entdeckt habe. Mit anderen Worten, dafür bin ich zu blöd und lasse die Finger davon
|
|
Thema: Preloader für externe Bilder |
Dodo
| Antworten: |
64 |
| Hits: |
3.522 |
|
|
| Zitat: |
Original von steff
..... nur bleibt da eben immer die geladenen Prozentzahl stehen !!
|
klar bleibt die stehen, wenn Du die nicht löscht, ausblendest oder sonst irgendwie verschwinden lässt. Das ist bei Script nun mal so, dass Du für alles selber sorgen musst.
In dem MovieClipLoader ist ja eine Function vorhanden, wo Du alles abhandeln kannst, was passieren soll, wenn das Laden erfolgreich beendet wurde.
| code: |
1:
2:
3:
4:
5:
6:
|
myL.onLoadInit = function(target:MovieClip){
target._parent.loader.htmlText = "";
_parent.navi._xscale = 0;
_parent.loaderbar._xscale = 0;
};
|
|
Erklärung:
der Inhalt von loader.htmlText wird durch "" gelöscht, damit sind die Prozente weg.
navi wird auf die Breite 0 zusammengestaucht, dadurch kannst Du die Button hinter dem geladenen Bild nicht mehr versehentlich anklicken
zusätzlich zu den Prozenten habe ich Dir noch einen Ladebalken eingebaut, dieser (loaderbar) wird ebenfalls auf die Breite 0 gestaucht.
hier die Demo
Im Anhang ist die swi, die verwendeten Bilder habe ich nicht mit hochgeladen, da kannst Du ja beliebige im Format 475 x 950 Pixel nehmen.
Vorsichtshalber noch der Hinweis, dass Du den Preloader nur siehst, solange die Bilder noch nicht im Cache sind. Also zum Testen immer wieder den Cache leeren.
|
|
Thema: Texte mit Button aufrufen? |
|
|
Hallo tony,
stell doch mal das, was Du schon probiert hast (Deine swi) hier rein. Auf der Basis wird sich dann ganz sicher jemand finden, der Dir weiter hilft.
|
|
|