Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-08-2003, 09:20   #1 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
Question anfänger: logischer fehler im AS???

hallo

ich möchte bilder die in einem mc liegen durch verschiedene buttons ansprechen. d.h.: isst ein knopf gedrüpckt soll das entsprechende bild einfaden. drückt man dann auf einen anderen soll das jetzige bild ausfaden und danach das neue bild einfaden.

zur besseren verständnis habe ich ein .swf und das fla drangehängt.
Angehängte Dateien
Dateityp: zip unbenannt-1.zip (5,0 KB, 6x aufgerufen)
dante ist offline   Mit Zitat antworten
Alt 20-08-2003, 09:45   #2 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
nimm mal hier den gotoAndStop-Befehl raus:
ActionScript:
  1. movieClip.prototype.bildwechsel=function(kunden) {
  2.     // bildnummer wird übergeben durch einen button
  3.     // mc bilder geht zur nummer und stoppt
  4.    
  5.     //macht es aber irgendwie falsch!
  6.    
  7.    
  8.     _global.nummer=kunden
  9.    
  10.     this.gotoAndStop(kunden)//<<<raus damit
  11.        
  12.     this.ausfaden=true
  13. }
...dann gehts im Prinzip schon, dann im bilder-mc noch folgendes ändern:
ActionScript:
  1. onClipEvent(enterFrame) {
  2.    
  3.     if ((_alpha<100)&&(!ausfaden)&&(_currentframe!=1)) {
  4.       ....
...das _currentframe!=1 verhindert, daß der Film bereits am Anfang (den leeren Frame) einfadet...


Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 20-08-2003, 09:55   #3 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Du mußt hier mit Variablen abeiten, die den Bildern-MCs sagen, wass sie machen sollen. Ich arbeite weitgehend ohne Eventhandler, um Performance zu sparen.

Du benötigst hierfür 2 Variablen auf _root.
z.B.
ActionScript:
  1. // Variable für den Zustand, welcher Film gerade eingeblendet ist
  2. istzustand = "";
  3. // Variable für den folgenden MC
  4. sollzustand = "";

Auf der Schaltfläche "rot" liegt folgendes Script:
ActionScript:
  1. if(_root.istzustand != ""){
  2.    _root[_root.istzustand].play();
  3.    _root.sollzustand= "mcrot";
  4. }else{
  5.    _root.mcrot.gotoAndPlay(1);
  6. }
Auf SF "grün" liegt dann:
ActionScript:
  1. if(_root.istzustand != ""){
  2.    _root[_root.istzustand].play();
  3.    _root.sollzustand= "mcgruen";
  4. }else{
  5.    _root.mcgruen.gotoAndPlay(1);
  6. }
Und auf SF "blau" liegt:
ActionScript:
  1. if(_root.istzustand != ""){
  2.    _root[_root.istzustand].play();
  3.    _root.sollzustand= "mcblau";
  4. }else{
  5.    _root.mcblau.gotoAndPlay(1);
  6. }

Jetzt mußt Du in das letzte Bild der ausfadenden MCs folgendes Script legen, damit sie dann den richtigen Film abspielen:
ActionScript:
  1. _root[_root.sollzustand].gotoAndPlay(1);

Jetzt muß noch der istzustand gesetzt werden, damit das Script der Schaltflächen weiß, welchen Film sie abspielen muß.
Und das setzt Du in das erste Bild der MCs, die das Bild einfaden lassen.

Beim roten Bild:
ActionScript:
  1. _root.istzustand="mcrot";
Beim grünen Bild:
ActionScript:
  1. _root.istzustand="mcgruen";
Beim blauen Bild:
ActionScript:
  1. _root.istzustand="mcblau";

Ich habe mir Dein File nicht angesehen, deswegen stehen hier auch nicht Deine Instanznamen.

Ich hoffe ich konnte DIch weiterbringen.
__________________
AS3 Lernhilfen

Geändert von TheFreeman (20-08-2003 um 09:57 Uhr)
TheFreeman ist offline   Mit Zitat antworten
Alt 20-08-2003, 09:58   #4 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
oh wow

danke

hab das voll übersehen.
wenn du mal hilfe in was anderem als flash brauchst (keine ahnung nen neues avatar bild oder so) ----> meld dich

=)
dante ist offline   Mit Zitat antworten
Alt 20-08-2003, 10:04   #5 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
@TheFreeman
danke dass du das "mal eben" so ausführlich gecodet und erklärt hast.

bei deinem lösungsansatz hätte ich nur für jeden button eindeutig mehr zu schreiben.

im endeffekt ist der film nicht so simpel wie die beispielsdatei die ich hier reingestellt habe.

das sind an die zwanzig buttons die nebenbei noch (verschiedene) andere sachen auslösen.


du hast es so gemacht um performance zu sparen. ist das tatsächlich ein spürbarer effekt?? also ich meine kann flash echt nen sagen wir mal ne 1800mhz cpu voll auslasten?? würd mich mal interessieren
dante ist offline   Mit Zitat antworten
Alt 20-08-2003, 10:08   #6 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Na dann mußt Du eben die Sachen, die in allen Schaltflächen gleich sind in eine Funktion auslagern und diese dann mit den Schaltflächen aufrufen.
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 20-08-2003, 10:18   #7 (permalink)
=)
 
Benutzerbild von dante
 
Registriert seit: Jun 2003
Beiträge: 499
...

jepp

...

könnte ich machen....
dante ist offline   Mit Zitat antworten
Alt 20-08-2003, 10:52   #8 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Zitat:
Geschrieben von TheFreeman
... Ich arbeite weitgehend ohne Eventhandler, um Performance zu sparen.
...
In FlashMX kann man doch die Eventhandler nach Belieben beeinflussen setzen und wieder entfernen, da wirst Du mit tweenings doch auch keinen performancegewinn bei gleicher Qualität erreichen...

OK, dante hat die clipEvents nicht so behandelt. Ich habe das script mal entsprechend umprogrammiert, also die clipEvents auf dem bilder-mc entfernen und in der Hauptzeitleiste folgendes script:
ActionScript:
  1. movieClip.prototype.fadeto=function(alpha,geschwindigkeit) {
  2.     // die fade in funktion
  3.     this._alpha+=(alpha-this._alpha)/geschwindigkeit
  4. }
  5.  
  6. movieClip.prototype.bildwechsel=function(kunden) {
  7.     bilder.onEnterFrame=function() {
  8.     if ((this._alpha<100)&&(!this.ausfaden)&&(this._currentframe!=1)) {
  9.       this.fadeto(120,32);
  10.     }else if ((this._alpha>0)&&(this.ausfaden)) {
  11.         this.fadeto(-20,32);
  12.     } else if ((this._alpha<=0)&&(this.ausfaden)) {
  13.         this.gotoAndStop(_global.nummer);
  14.         this.ausfaden=false
  15.     }else{
  16.         delete(this.onEnterFrame);
  17.     }
  18. }
  19.     _global.nummer=kunden
  20.     this.ausfaden=true
  21. }
  22. bilder.gotoAndStop(1)
  23. bilder._alpha=0
  24. bilder.geschwindigkeit=32
  25. bilder.ausfaden=false

übrigens gibt es auch einen schönen bildwechsel-thread im oop-Bereich

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (20-08-2003 um 10:54 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 20-08-2003, 13:35   #9 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Alois´s Lösung ist wohl ein wenig eleganter.
__________________
AS3 Lernhilfen
TheFreeman 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 08:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele