Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-02-2004, 19:14   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
pfadangaben_problem

hallo flashbesgeisterte,
hätte da ein anliegen mit pfadangaben an euch.

ich verstehe nicht ganz wie man filmsequenzen aus verschiedenen szenen heraus steuern/ansprechen kann.
so siehts aus:
auf der hauptszene liegt eine filmsequenz"block". darin befindet sich eine filmsequenz "blockinnen" mit einem baluen rechteck 315x148 und eine schaltfläsche . beides jeweils auf dem nullpunkt ausgerichtet.

wenn ich nun auf die schaltfläsche klicke soll sich das rechteck bzw die filmsequenz "blockinnen" auf x+y=0 skalieren. klicke ich nochmals soll er die audgangsmasse 315x148 annehmen...usw. also wie ein popup das man auf und zumachen kann.

kann mir jemand mal genau erklären wie ich nun die pfadangeaben handhabe?
habe mir das so gedacht:
vom button aus zurück nach "_root." --> in das objekt block "block." --> und das objekt blockinnen skalieren "blockinnen._yscale"

das ganze sieht dann so aus, leider passiert garnichts:-):
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------

schaltfläsche:
on(release){
if(_root.block.blockinnen._xscale>10)_root.block.b lockinnen._yscale=0, _root.block.blockinnen._xscale=0
if(_root.block.blockinnen._yscale<10) _root.block.blockinnen._yscale=148, _root.block.blockinnen._xscale=315
}

objekt "block
onClipEvent(enterFrame){
this._x+=this._xmouse/10, this._y+=this._ymouse/10
}


objekt "blockinnen":
onClipEvent(enterFrame){
this._alpha=30
}

------------------------------------------------------------------------------------
------------------------------------------------------------------------------------

währe dankbar wenn mir das mal jemand verständlich erklären könnte. ohne das nütz irgendwie der ganze andere erlernte kram nix :-((

danke
metraxas


------------------------------------------------------------------------------
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (05-02-2004 um 19:15 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 05-02-2004, 20:10   #2 (permalink)
coolgreyuser
 
Benutzerbild von Dummer:Junge
 
Registriert seit: Feb 2002
Ort: K. am R.
Beiträge: 799
Der Ansatz, sich von _root aus zum gewünschten Objekt "durchzuwühlen" kann richtig sein, in dem von Dir beschriebenen Fall ist die Pfadangabe von _root aus aber nicht nötig, da Schaltfläche und MC in der selben Zeitleiste ("Block") liegen. Was dann aber auch der korrekteste Pfad nicht ändern kann ist die (sorry!) AS-Fehlerorgie, die darauf folgt. Ohne Syntax-Fehler sähe das dann so aus:
ActionScript:
  1. //schaltfläche:
  2. on(release){
  3.     if(_root.block.blockinnen._xscale>10) {
  4.         _root.block.blockinnen._yscale=0;
  5.         _root.block.blockinnen._xscale=0;
  6.     }
  7.     if(_root.block.blockinnen._yscale<10) {
  8.         _root.block.blockinnen._yscale=148;
  9.         _root.block.blockinnen._xscale=315;
  10.     }
  11. }
  12. //die if-Anweisungen müssen in {}-Klammern stehen und durch ; voneinander getrennt sein!!!
  13. //
  14. //
  15. //objekt "block"
  16. onClipEvent(enterFrame){
  17.     this._x+=this._xmouse/10;
  18.     this._y+=this._ymouse/10;
  19. }
  20. //das "this" kannst du hier 4x sparen...
  21. //
  22. //
  23. //objekt "blockinnen":
  24. onClipEvent(enterFrame){
  25.     this._alpha=30;
  26. }
  27. //versteh ich nicht. Warum x-mal pro Sekunde diese Eigenschaft erneuern??
  28. // einmal würde reichen (und wäre performanceschonend):
  29. //onClipEvent(load) {
  30. //this._alpha=30;
  31. //}
  32.  

Soweit erstmal. Wenn's damit noch immer nicht deinen Vorstellungen entsprechend läuft, dann fragst nochmal nach.
__________________
Achim MX

Geändert von Dummer:Junge (05-02-2004 um 20:13 Uhr)
Dummer:Junge ist offline   Mit Zitat antworten
Alt 05-02-2004, 21:30   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
danke erstmal für die schnelle antwort!!!

also,
1:
_root.block.blockinnen._yscale=
ersetzen durch:
blockinnen._yscale=
richtig?

2:
wusste ich schon immer das an meiner if schleifenschreiberei
etwas nicht ganz normal war :-D, das hat sich damit dann ja
gelöst.wobei die andere variante auch teils funktioniert.

3:
was meinst du denn mit "das this kannst du hier 4x sparen..."?
das sollte dazu dienen das das fenster die maus verfolgt.
oder meinst du damit das ich das this. weglassen kann??
also nur _x=_ymouse??

4:
das "enterFrame" war ein versehen

5.
zum aktuellen problem:

es geht nicht!!!!!!

hab dein script mal eingefügt.(mit und ohne _root.block.)
das einzige was sich ändert ist die vergrösserung der x+yachse, beim ersten klick auf den buton. was aber eindeutig die falsche richtung ist, da sich das fenster zuert schliessen sollte:_( . zudem passiert nach weiterem klicken nichtsmehr.

hier mal die .fla,
vieleicht kannst du da mal reinschaun:-)

danke dir,
metraxas
Angehängte Dateien
Dateityp: rar fenster.rar (1,9 KB, 3x aufgerufen)
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (05-02-2004 um 21:32 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 05-02-2004, 21:42   #4 (permalink)
coolgreyuser
 
Benutzerbild von Dummer:Junge
 
Registriert seit: Feb 2002
Ort: K. am R.
Beiträge: 799
zu1.
richtich!!

zu2.
kann mir nicht vorstellen, dass da irgendwas teilweise funktioniert hat. Egal.

zu3.
Fast! this weglassen stimmt, aber _x = _ymouse bringt nix.
_x = _root._xmouse;
_y = _root._ymouse;
sollte gehen.

zu4.
dacht ich mir.

zu5.
kann dein*.rar nicht öffnen, häng's nochmal dran, aber bitte gezippt. Kümmer mich dann morgen nochmal drum.

Gruß,
GJ
__________________
Achim MX
Dummer:Junge ist offline   Mit Zitat antworten
Alt 06-02-2004, 12:37   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
1:
gut zu wissen:-)

2:
das skript zb für den preloader das ichmir zusammengefriemelt hab, klappt einwandfrei ohne kommas, semikolon..usw..!
onClipEvent(enterFrame){
_root.alleDaten=_root.getBytesLoaded()
_root.byter=_root.alleDaten*1024
_root.texter=_root.byter
this._width=_root.byter
if(_root.alleDaten==totalDaten) _root.gotoAndPlay(20)
}

manchmal klappts auch mit der russischen veriante.elga:-)

3:
"aber _x = _ymouse bringt nix"....
eigentlich logisch, man kommt nur manchmal erst darauf wenn jemand einen darauf hinweist.lol

5:
irgentwie kann das nie einer öffnen:-( irgendwas stimmt mit meinen rars nicht!
werd mal zip instalieren und im laufe des tages die datei posten, inder hoffnung das du das prob findest. das ist für mich nähmlich unerklärlich !(siehe punkt 3....lol)

danke
metraxas
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (06-02-2004 um 12:39 Uhr)
metraxas ist offline   Mit Zitat antworten
Alt 06-02-2004, 13:53   #6 (permalink)
coolgreyuser
 
Benutzerbild von Dummer:Junge
 
Registriert seit: Feb 2002
Ort: K. am R.
Beiträge: 799
... hab mir's nochmal angesehen und den offensichtlichen Fehler gefunden:

Auf dem Button werden zwei if-Anweisungen hintereinander ausgeführt.
1. Wenn blockinnen._xscale größer als 10 ist soll's auf 0 runterscaliert werden. Das funktioniert, wird aber vom folgenden if-Befehl direkt wieder rückgängig gemacht, da jetzt auch die Bedingung (dass blockinnen.y_scale kleiner als 10 ist) zutrifft. So kann das doch nix werden!

Darum also:
ActionScript:
  1. on(release){
  2.     if(blockinnen._yscale>10){
  3.         blockinnen._yscale=0;
  4.         blockinnen._xscale=0;
  5.     } else {
  6.         blockinnen._yscale=148;
  7.         blockinnen._xscale=315;
  8.     }
  9. }

Nu weiß ich ja nicht, was das mit den verschiedenen Skalierungen bringen soll, denn letztenendes gibt's doch nur zwei "Zustände" von blockinnen: sichtbar und unsichtbar.
ActionScript:
  1. on(release){
  2.     if(blockinnen._visible){
  3.         blockinnen._visible = false;
  4.     } else {
  5.         blockinnen._visible = true;
  6.     }
  7. }
...käme also auf's gleiche raus. Oder soll die Größe von blockinnen sichtbar vergrößert werden? Da gäb's 'ne elegantere Variante (hab ich mal als vereinfachtes Beispiel drangehängt)...

Zum Schluß nochwas zum "Mausverfolgen" von "block":
Da ist es doch nicht nötig, permanent die Mauskoordinaten abzufragen und die Position von "block" neu zu berechnen, sondern nur dann, wenn die Maus auch wirklich bewegt wird:
ActionScript:
  1. onClipEvent(mouseMove) {
  2.     _x = _root._xmouse/10;
  3.     _y = _root._ymouse/10;
  4. updateAfterEvent();
  5. }
... läuft dann auch sehr flüssig.

Gruß,
GJ
Angehängte Dateien
Dateityp: zip metraxas.zip (3,3 KB, 3x aufgerufen)
__________________
Achim MX
Dummer:Junge ist offline   Mit Zitat antworten
Alt 06-02-2004, 15:35   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
....wow..direkt mal viel viel dazugelernt:-)

das mit visible stimmt, das ist ja viel sinnvoller!..thanks!
hab trotzdem mal die fla. gezippt denn eines verstehe ich bei der methode mit "scale" nicht:
mein fenster verkleinert sich und beim nächsten klick verdoppelt sich es in der länge und um die hälfte in der höhe!?


zum mausverfolger:
der sinn war/ist eigenlich das das fenster die maus ständig mit verzögerung verfolgt. zudem soll es schrittweise langsamer werden, jeh näher es sich an der mausposition befindet.
nehme ich dazu aber :

onClipEvent(mouseMove) {
_x = _root._xmouse/10;
_y = _root._ymouse/10;

bleibt das fenster auf halber strecke zur maus hin stehen, sobalt man die maus stillhält. was aber nicht passieren sollte.
daher:

onClipEvent(enterFrame){
_x+=this._xmouse/5;
_y+=this._ymouse/5;
}


...was ich nun nicht verstehe ist, wenn ich "this._xmouse" durch _root._xmouse" ersetze, richtet das fenster sich nicht mehr nach der mausposition aus, sondern nach dem nullpunkt der hauptszene!
eigentlich sollte doch "xmouse" auch "xmouse" sein und nicht "_x"
?(brettformkopp)
zudem funktioniert das ganze auch einfach nur mit "_xmouse"

welches der varianten währe denn richtig?
und warumm skaliert sich das fenter falsch?
__________________
!!Gefährliches Halbwissen macht den meister!!
metraxas ist offline   Mit Zitat antworten
Alt 06-02-2004, 15:37   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
.
Angehängte Dateien
Dateityp: zip metraxas.zip (3,1 KB, 5x aufgerufen)
__________________
!!Gefährliches Halbwissen macht den meister!!
metraxas ist offline   Mit Zitat antworten
Alt 06-02-2004, 15:51   #9 (permalink)
coolgreyuser
 
Benutzerbild von Dummer:Junge
 
Registriert seit: Feb 2002
Ort: K. am R.
Beiträge: 799
_xmouse und _ymouse gelten immer im Bezug zum Koordinatenursprung der jeweiligen Zeitleiste. Und _yscale != _height bzw. _xscale != _width, will sagen, dass dein Objekt, wenn es 315px breit ist bei _xscale = 315 natürlich 992.4px breit wird (um 315% in x-Richtung skaliert). Na, fällt der Groschen?? _xscale = 100 und _yscale = 100 wäre richtig.

Gruß,
GJ
__________________
Achim MX
Dummer:Junge ist offline   Mit Zitat antworten
Alt 06-02-2004, 16:30   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
..oh man, der groschen ist hoffentlich am fallen!!
also wird nach % und nicht nach pixel scaliert!?
und mit _height und _width kann man in pixel skalieren?
richtig?



"_xmouse und _ymouse gelten immer im Bezug zum Koordinatenursprung der jeweiligen Zeitleiste"

wenn ich die maus bewege (zb auf x+y 300*300),ändert sich doch auch die x+y koordinaten der maus. also ändert sich demnach auch der Koordinatenursprung der maus auf "szene1" (_root).oder?
eigentlich sollte doch das selbe passieren ,da wenn ich die maus in "Blockinnen" (_xmouse; _ymouse)
auf 300*300 bewege, sind die koordinaten der maus auf "szene1" (_root._xmouse; _root._ymouse) auch auf 300*300?
__________________
!!Gefährliches Halbwissen macht den meister!!
metraxas ist offline   Mit Zitat antworten
Alt 06-02-2004, 18:38   #11 (permalink)
coolgreyuser
 
Benutzerbild von Dummer:Junge
 
Registriert seit: Feb 2002
Ort: K. am R.
Beiträge: 799
Zitat:
..oh man, der groschen ist hoffentlich am fallen!!
also wird nach % und nicht nach pixel scaliert!?
und mit _height und _width kann man in pixel skalieren?
richtig?
Ja, so könnte man's sehen.

Zitat:
wenn ich die maus bewege (zb auf x+y 300*300),ändert sich doch auch die x+y koordinaten der maus. also ändert sich demnach auch der Koordinatenursprung der maus auf "szene1" (_root).oder?
eigentlich sollte doch das selbe passieren ,da wenn ich die maus in "Blockinnen" (_xmouse; _ymouse)
auf 300*300 bewege, sind die koordinaten der maus auf "szene1" (_root._xmouse; _root._ymouse) auch auf 300*300?
Nee, eben nicht. Angenommen Du hast ein Objekt namens "quadrat", dessen Koordinatenursprung (das ist das kleine Kreuz!!) genau auf dessen linker, oberer Ecke liegt. "quadrat" liegt in der Hauptzeitleiste (_root) auf _x=100 und _y=100, dann ist _root._xmouse immer 100 weniger als quadrat._xmouse (mit _ymouse natürlich genauso...). Hm, ich hoffe das ist so nachvollziehbar. Sonst mach doch mal ein paar Experimente, in denen Du Dir die Mauskoordinaten von verschiedenen Objekten aus gesehen als Variablen anzeigen lässt....
Für heute muss das genügen. Schönen Abend noch!

Gruß,
GJ
__________________
Achim MX
Dummer:Junge ist offline   Mit Zitat antworten
Alt 09-02-2004, 15:52   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 148
jo,
hab mal das wochenende lang rukmgefüftelt mir allen varianten von y_mouse.......!!
denke mal das ich das nun einigermassen verstanden hab !!
dank deiner weitreichenden hilfe




aber kaum hat man das eine gerafft schon stösst man auf das nächste:-((
:tread: "as --> Flasche mit duplicate füllen"


wie gesagt,
danke das du dir zeit genommen hast:-)
__________________
!!Gefährliches Halbwissen macht den meister!!

Geändert von metraxas (09-02-2004 um 15:57 Uhr)
metraxas 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 00:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele