intance animation

flärbretli

Mitglied
Hallo

Nun, ich habe gerade ein grosses Problem.
Ich bin an einer Website und ich möchte, wenn man vom einen Menüpunkt zum anderen springt eine kleine Animation kommt.
Also, wenn ich z.B auf "home" bin und dann auf "Produkte" klicke, dass eine kleine Animation kommt.

Die Animation habe ich schon gemacht, dies ist ein Würfel der sich bewegt, sie geht 100 frames.
Die Website hat 6 Menüpunkte. (home,gallery,ect)
Jetzt sollte bei Menüpunkt 1: die Animation auf Frame 1 sein, bei Menüpunkt 2, sollte die Animation auf 20 Frames sein, bei 3 die Ani, auf 40 ect.

Ich habe nun der Animations Ebene eine Instance gegeben Names "ani".
Die Navigationsbuttons habe ich folgende Befehle gegeben.
on (release) {ani.gotoAndStop(20);} ect.
Mein Problem ist jetzt, wenn ich auf Gallery klicke, sprint die Animation auf das gewünschte Frame aber spielt nich die Animation von 0 bis zum gewünschten Frame.

Gibt es eine möglichkeit, dass ich z.B sagen kann. goAndPlay (20-40) and Stop. oder so etwas....

vielen Dank und ich hoffe jemand hat meinen Text verstanden.

gruss
 
Hallo,

eigentlich könntest du ja einfach auf das 40ste Keyframe nen stop()-Befehl setzen. Ansonsten codest du eine Funktion, die als Parameter das Start-Frame und das Stop-Frame bekommt:

PHP:
function spieleAnimation (startFrame, endFrame) {
    this.gotoAndPlay(startFrame);
    this.onEnterFrame = function () {
        if (this._currentframe == endFrame) {
             delete this.onEnterFrame;
             this.stop();
        }
    }
}

//auf den Buttons
on (release) {
   spieleAnimation (20, 40);
}

gruss
 
Danke für deine Hilfe.
Ich habe diese Funktion nun auf eine Ebene höher geschrieben wie meine animations Ebene.

Doch leider bekomme ich immer einen Error.

**Error** Scene=Scene 1, layer=Animation, frame=1:Line 1: Statement must appear within on/onClipEvent handler
function spieleAnimation (startFrame, endFrame) {

Total ActionScript Errors: 1 Reported Errors: 1

Habe ich die Funktion am falschen Ort oder ist die Instance falsch?

liebe Grüsse aus der Schweiz
 
Hallo,

weil du es oben so erwähntest bin ich davon ausgegangen, dass du die onRelease-Funktion auf einen Button legst. Den Error hast du bekommen, weil du Code auf einem Keyframe hattest, der mit dieser Syntax nur auf einer Instanz (MovieClip, Button) gültig ist. In einem normalen Keyframe schreibt sich das ein bisschen anders:

PHP:
meinButton.onRelease = function () {
    this._parent.spieleAnimation (20, 40);
}

Als Alternative kannst du natürlich den Code ab on (release) usw auch auf einen Button legen.

gruss
 
Hallo,

1. Bitte entschlanke deine Dateien, die du postest, jeweils ein wenig, es hat nicht jeder Lust sich 4.5 MB herunterzuladen, wenn es eigentlich um zwei drei Zeilen Code geht. Pack also den relevanten Teil des Films in eine separate Datei und poste/verlinke dann die.

2. Die Funktionsdefinition muss auf ein Keyframe und mit dem onRelease-Befehl verhält es sich wie folgt:

Diese Syntax gehört auf einen Button (auf den Button klicken, dann ins Aktionen-Fenster scripten):

PHP:
on (release) {
    //deine Anweisungen
}

Diese Syntax hingegen gehört in ein Schlüsselbild/Keyframe des Hauptfilms eines MovieClips (Bild aus der Zeitleiste auswählen, im Aktionen-Fenster scripten):
PHP:
instanzNameDeinesButtons.onRelease = function () {
    //deine Anweisungen hier
}

Deine Codeschnipsel waren ausserdem gespickt mit syntaktischen Fehlern, dann hast du auch bei allen onRelease-Befehlen die geschweiften Klammern zum Schluss vergessen (wahrscheinlich beim Einfügen passiert ;)). Ich empfehl dir die Flash-interne Hilfe als Lektüre, probier dich da erstmal schlau zu lesen, besonders was das Code-Platzieren angeht.

gruss
 
Sorry, das die Datei so gross war.
Ich arbeite erst seit einer Woche mit Flash und dies eher unfreiwilig (Studium).

Das on (release) auf ein Button kommt, habe ich jetzt begriffen und funktioniert auch.
Doch die funktion "spieleAnimation" noch nicht ganz.

ich habe diesen code :
PHP:
home.onRelease = function spieleAnimation (startFrame, endFrame) {
    this.gotoAndPlay(startFrame);
    this.onEnterFrame = function () {
        if (this._currentframe == endFrame) {
             delete this.onEnterFrame;
             this.stop();
        }
    }
}

auf die animations Ebene geschrieben. Den Button "home" habe ich die instance home gegebn.

Leider bekomme ich immer diesen Fehler:
**Error** Scene=Scene 1, layer=Animation, frame=1:Line 2: Function declaration not permitted here
home.onRelease = function spieleAnimation (startFrame, endFrame) {

**Error** Symbol=würfel, layer=würfel, frame=1:Line 2: Unexpected '}' encountered
}

Total ActionScript Errors: 2 Reported Errors: 2

Die Funktion muss ich doch auf einem Schlüsselbild deklarieren. Aber auf welchem?

ICh hoffe du hast noch einmal Geduld für ein Anfänger.

gruss...
 
Klar, so funktioniert das nicht ;). Du kannst nicht bei einem onRelease Event gleich noch die Funktion benamseln, mitdefinieren und aufrufen.

Nun setzt du auf das erste Keyframe des Films folgendes:
PHP:
function spieleAnimation (startFrame, endFrame) {
    this.gotoAndPlay(startFrame);
    this.onEnterFrame = function () {
        if (this._currentframe == endFrame) {
             delete this.onEnterFrame;
             this.stop();
        }
    }
}

//Für jeden Button den du hast, folgendes, aber ACHTUNG, immer noch auf dem Keyframe
home.onRelease = function () {
    spieleAnimation (20, 40);
}
biografie.onRelease = function () {
    spieleAnimation (41, 120'000);
}
//usw

gruss
 
Ich denke, ich habe die Anforderung die ein User an ein anderen User stellen kann schon lange übersteigert. Ich wäre auch nicht überschat wenn du keine Lust mehr hast mir zu Helfen.
Aber ein Versuch ist es noch Wert.

Habe jetzt alles so eingestellt wie du mir gesagt hast und bekomme auch keinen *Error* mehr. Doch die Animation will nicht, wie ich möchte. Wenn ich auf home klicke, fähngt sie einfach von Vorne an usw. Dabei steht doch in der Funktion Sie soll von Frame(zahlt) bis zum Frame(zahl) andstop.

Ich weiss wirlich nicht was ich noch machen könnte.
leider ist die Datei immer noch m5b gross. Ich denke die Grösse kommt von der Würfel animation.
Vielleicht hast du noch die Geduld zum http://omega.speedsell.ch/omega/website_trois.rar, wenn nicht, ich verstehe es.

gruss von der schweiz
 
Hallo,

kein Wunder spielt die Animation nicht, du musst sie noch richtig anvisieren. Gib der grossen Animation in der Mitte den Namen "wuerfel" und ersetze die Funktion durch diese leicht angepasste Version. Aber pass auf, nur grade mal der home-Button ist mit ActionScript belegt, dass auch wirklich funktioniert. Probier das noch selbst zu korrigieren.

PHP:
function spieleAnimation (startFrame, endFrame) {
    this.wuerfel.gotoAndPlay(startFrame);
    this.wuerfel.onEnterFrame = function () {
        if (this.wuerfel._currentframe == endFrame) {
             delete this.onEnterFrame;
             this.wuerfel.stop();
        }
    }
}

gruss
 

Neue Beiträge

Zurück