Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-01-2004, 08:21   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 78
_xscale _yscale newbie-frage

Hallo zusammen

Ich möchte einen MC per AS so steuern, dass er sich von einer grösse von 1500% wieder in seine Ursprunsgrösse zurückskaliert und dann stoppt. Ich weiss, dass ist sicher total einfach.... aber ich komm hier nicht so richtig weiter.... mit tweening kein problem, ich möchte aber AS lernen und da häng ich schon am ersten Buckel


hier mein Scriptanfang:

onClipEvent (load) {
_xscale += 1500;
_yscale += 1500;
}
onClipEvent (enterFrame) {
_xscale -= 100;
_yscale -= 100;
}

dann sollte doch ne if-Abfrage kommen, oder? Ich hab schon so ziemlich alles versucht, hat aber bis jetzt nicht geklappt.

und dann noch ne verständnisfrage....
wenn ich zum Beispiel _xscale +=10 und _yscale +=10 im Script habe, dann bedeutet es doch, dass sich die grösse des MC's um 10% erhöht.... dann ist doch aber die Originalgrösse 0%, oder seh ich das falsch? In den Threads die ich durchgeackert habe, stand das 100% die Originalgrösse wäre.... ich steig da nich so recht durch.

Kann mir da bitte jemand auf die Sprünge helfen?

danke choosy
choosy ist offline   Mit Zitat antworten
Alt 23-01-2004, 10:16   #2 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
Hallo,

+10 bedeutet, das 10%-Punkte dazu gezählt werden, d.h. ist die Skalierung 0 und du erhöhst um 10, dann ist der Wert jetzt 10.

ActionScript:
  1. onClipEvent (enterFrame) {
  2. _xscale -= aenderung;
  3. _yscale -= aenderung;
  4. if (_xscale == 100)
  5. {
  6. aenderung = 0;
  7. }
  8. }
Allerdings: dein Event wird weiterhin durchlaufen.
Kann Flash 5 auch Eevnts so setzen, wie in Flash MX?

Grüße,
solo

Geändert von soloFlash (23-01-2004 um 10:17 Uhr)
soloFlash ist offline   Mit Zitat antworten
Alt 23-01-2004, 11:24   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 78
Hi solo

Zitat:
+10 bedeutet, das 10%-Punkte dazu gezählt werden, d.h. ist die Skalierung 0 und du erhöhst um 10, dann ist der Wert jetzt 10.
Ja genau, dass hab ich gemeint... dann muss ich also die if-Abfrage so setzen: if (_xscale=0) oder? Und dann?

also ich habs damit versucht: ist selber zusammengebastelt und dann auch noch vom nem total AS-newbie, also grottenfalsch

ActionScript:
  1. onClipEvent (enterFrame) {
  2.     _xscale -= 100;
  3.     _yscale -= 100;
  4. if (_xscale=0, _yscale=0)
  5. stop()
  6. }

oder ist das ein total falscher Ansatz und ich muss die Originalgrösse vorher erst definieren?

Zitat:
Allerdings: dein Event wird weiterhin durchlaufen.
yep.... ich habs versucht
Zitat:
Kann Flash 5 auch Eevnts so setzen, wie in Flash MX?
ich weiss nicht was genau bei Flash MX anders is...

kann mir da bitte jemand nen Denkanstoss geben?

choosy
choosy ist offline   Mit Zitat antworten
Alt 23-01-2004, 11:55   #4 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
zur Info:
= ist ein Zuweisungsoperator
== ist ein Vergleichsoperator
demanach musst du schreiben:
ActionScript:
  1. if (_xscale == 0) {
  2.  //...
  3. }
  4.  
  5. // da _xscale und _yscale immer gleich sind, reicht es eins davon abzufragen
  6. // ansonsten musst Du es so schreiben (and kann auch durch && erstetzt werden, denke ich)
  7. if (_xscale == 0 and _yscale == 0)
  8. {
  9. //...
  10. }
ansonsten sollte es klappen.

Grüße,
solo
soloFlash ist offline   Mit Zitat antworten
Alt 23-01-2004, 12:50   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 78
Ahja.... klasse danke solo.... das mit dem == wusste ich nicht!
also, ich hab es jetzt so versucht wie Du es geschrieben hast

onClipEvent (load) {
_xscale += 1500;
_yscale += 1500;
}
onClipEvent (enterFrame) {
_xscale -= 100;
_yscale -= 100;
if (_xscale==0)
stop()

}

geht aber auch nicht..... immer der gleiche Effekt: der MC skaliert sich kleiner, spiegelt sich dann horizontal und wird wieder grösser
aber ich glaub, dass mit dem stop() ist sowieso total daneben, oder?

ich hab es dann mal so versucht:

onClipEvent (load) {
_xscale += 1500;
_yscale += 1500;
}
onClipEvent (enterFrame) {
_xscale -= 100;
_yscale -= 100;
if (_xscale==0) {
_xscale = 0;
}
}
is aber leider auch nichts.....

och menno.... des gibts doch ned
choosy ist offline   Mit Zitat antworten
Alt 23-01-2004, 13:38   #6 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
na immerhin tut sich schon mal was
ein stop(); bezieht sich auf einen Film, ein EnterFrame hältst Du damit nicht an, das wird immer dann ausgeführt, wenn das Frame "betreten wird, also bei einer Filmlänge von einem Frame, wird es immer aufgerufen, eine Endlosschleife (wenn mich jemand korrigieren will, dann nur zu, bin auch kein Profi!)

Ich Tippe mal, bei _xscale = 0 (den zweiter Versuch) war nichts mehr zu sehen?! Grund: Du hast es auf 0 skaliert, damit ist es soooooooo klein, dass Du es nicht mehr sehen kannst.

ActionScript:
  1. onClipEvent (load) {
  2. _xscale += 1500;
  3. _yscale += 1500;
  4. _root.aenderung = 100; // speichert auf der Root die Variable ab ...
  5. }
  6. onClipEvent (enterFrame) {
  7. _xscale -= _root.aenderung; // ... die Du hier verwendest ...
  8. _yscale -= _root.aenderung;
  9. if (_xscale==0)
  10. _root.aenderung = 0; // ... und hier auf 0 setz!
  11. }

untested, but should work

solo
soloFlash ist offline   Mit Zitat antworten
Alt 23-01-2004, 15:19   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 78
hey solo....

hat geklappt..... vielen Dank


ich hab noch die eine 0 durch ne 100 ersetzt, dann war gut, klasse

Ich hab da jetzt noch ne Verständnisfrage...

onClipEvent (load) {
_xscale += 1500;
_yscale += 1500;
_root.meinMC = 100; // speichert auf der Root die Variable ab ...
}
onClipEvent (enterFrame) {
_xscale -= _root.meinMC; // ... die Du hier verwendest ...
_yscale -= _root.meinMC;
if (_xscale==100)
_root.meinMC = 0; // ... und hier auf 0 setz!
}

Du hast ja _root.meinMC den Wert 100 zugewiesen.
Wieso kann ich dann nicht schreiben
_xscale -= 100;
_yscale -= 100;
das wäre doch eigentlich das selbe, oder? Geht aber nicht...

den if teil versteh ich auch noch nicht so ganz....
if (_xscale==100) // das ist klar!!! aber
_root.meinMC = 0; ???

Am Anfang hattest Du doch die Originalgrösse mit 100 gespeichert... _root.meinMC = 100;
warum dann jetzt also die 0???

Wie gesagt, das Script funzt prima.... ich möchte es nur gern verstehen, ich will ja schliesslich drauf aufbauen können.... damit ichs irgendwann mal alleine kann
bald......
demnächst.......
naja, in weiter ferne......


vielen Dank
choosy
choosy ist offline   Mit Zitat antworten
Alt 23-01-2004, 16:39   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 78
hey solo....

jetzt is alles klar

ich hab mal wieder um tausend Ecken gedacht...

es klappt und ich habs verstanden, was will man mehr zum Wochenende hin....

ich danke Dir vielmals für Deine Hilfe

choosy
choosy ist offline   Mit Zitat antworten
Alt 24-01-2004, 13:58   #9 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
Hi,

schön, wenn Du es selbst verstanden hast, so lernt man an besten

viel Spass,
solo
soloFlash ist offline   Mit Zitat antworten
Alt 25-01-2004, 11:04   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 78
so, wie soll es auch anders sein, schon wieder komm ich nicht recht weiter....

Ich habe jetzt noch einen zweiten MC, der erst starten soll, wenn der erste MC sich in seine Endposition skaliert hat. Das Script sieht inzwischen so aus:
ActionScript:
  1. onClipEvent (load) {
  2. _xscale += 1500;
  3. _yscale += 1500;
  4. _alpha = 0;
  5. _root.aenderung = 100;
  6. _root.coolejungs._xscale += 1500;
  7. _root.coolejungs._yscale += 1500;
  8. _root.coolejungs._alpha = 0;
  9.     _root.aenderung1 = 100;
  10. }
  11. onClipEvent (enterFrame) {
  12.     _alpha += 10;
  13.     _xscale -= _root.aenderung;
  14.     _yscale -= _root.aenderung;
  15.     if (_xscale == 100) {
  16.         _root.aenderung = 0;
  17.         _root.coolejungs._alpha += 10;
  18.         _root.coolejungs._yscale -= _root.aenderung1;
  19.         _root.coolejungs._xscale -= _root.aenderung1;
  20.      if (coolejungs._xscale == 100) {
  21.         _root.aenderung1 = 0;
  22. }
  23. }
  24. }

funktioniert soweit auch alles, nur skaliert sich der zweite MC (coolejungs) wieder soweit, dass er sich horizontal spiegelt und wieder grösser wird, also findet er sein"stop" nicht.
Warum das denn?

choosy

Geändert von choosy (25-01-2004 um 11:06 Uhr)
choosy ist offline   Mit Zitat antworten
Alt 25-01-2004, 15:11   #11 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 78
ich habs inzwischen rausgefunden!!!

ich hab in der letzten if - Anweisung das _root vergessen....
ich blödi
choosy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele