Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Flash-Film mit Variabler steuern?

Flash-Film mit Variabler steuern?

Maxefaxe23.06.0522:49
Ich würde gern einen Film mit mehreren Dutzend Szenen von einer .txt-Datei aus steuern. Diese enthält nicht mehr als ein Zahl zwischen 10 und 30. Anhand dieser Zahl soll der Flash-film entscheiden wie weit er spielt (Immer am Anfang jeder Szene soll das abgefragt werden. Sprich bei der Zahl 15 soll am Anfang der Szene 16 die Entscheidung gefällt werden wieder zu Szene 1 zu springen.

Wer weiss wie man so etwas elegant lösen kann?
0

Kommentare

Harun24.06.0500:11
Kenne mich zwar kaum mit Flash aus, das sollte sich aber mit Flash Action Script realisieren lassen...
0
planetexpress69
planetexpress6924.06.0500:22
send(Load)Vars, send(Load)XML...
0
Maxefaxe24.06.0502:02
XML iss nicht. Ich habe nur Flash 4. Das es mit Load Variables geht war mir klar, aber wie kann ich daraus ein Bedingung formulieren?

Sinngemäß

:if (variable) >15 then go to play scene 1 frame 1
0
Maxefaxe24.06.0509:59
Keine Ideen? Wo sind hier die Web-Fachleute?
0
rofl
rofl24.06.0511:21
Web-Fachleute != Flash
0
Jaguar1
Jaguar124.06.0511:43
Was hat denn Flash mit Web zu tun!? *schauder*
„Die Menschen sind nicht immer was sie scheinen, aber selten etwas besseres.“
0
goldgeist
goldgeist24.06.0512:23
tja, du hast das doch schon selbst beantwortet...
Deine Syntax ist zwar (noch) falsch, aber im prinzip ist das richtig.

Musst beim laden der Datei noch drauf achten, das sie vollständig geladen wurde, unter version 4 könntest Du eine abschliessende Var einfügen, fertig=true oder so. Erst wenn du die Abfragen kannst wertest Du aus.

Dann solltest Du die vars in ein array sortieren, damit du die Posten besser durchlaufen kannst.

Wie das alles genau geht erfährste ja mit einem Blick in die Actionscripthilfe.
0
Maxefaxe24.06.0512:24
In diesem Fall ist eine Offline-Anwendung, ist mir aber egal ob es nun Web-Experten sind oder nicht. Statt Belehrungen wo man Flash nun einsetzt, hatte ich mir praktische Hilfe erhofft.

Ist wohl das falsche Thema für dieses Forum.
0
Maxefaxe24.06.0512:32
goldgeist

Kannst Du das etwas genauer ausführen? Ich muss die Variable aus einer Textfile laden. Muss diese nur die Zahl enthalten oder auch eine Kennung (var=15).

Mit welchem Befehl werte ich die Variable aus? (Wie erkennt der die variable, muss ich die in ein Textfeld laden?

Ich bin leider kein Actionscriptkenner. Wie formuliere ich einen If-then Ausdruck der meinem Beipiel entspricht (Variable 15 ist geladen und in Szene 16 soll damit der Befehl kommen zu Szene 1 zu springen)
0
Maxefaxe24.06.0512:40
goldgeist

Habs geschafft. Danke
0
Maxefaxe24.06.0513:03
Zu früh gefreut. Wie ist das Ziel der Variablen anzugeben? Ist mein Ausdruck überhaupt korrekt? In diesem Fall spring er immer zu Szene 1, egal wie die Höhe der Zahl ist
0
Maxefaxe24.06.0513:04
Hier der Syntax der if-Bedingung
0
rofl
rofl24.06.0513:05
Kann es sein, dass er deine eingelesene Variable (Text, String, char) nicht als Zahl (integer) akzeptiert.

Sorry aber mist AS hab ich gar keine Erfahrung.
0
Klaus Major24.06.0513:16
Hi Maxefaxe,

unterstützt Fläsch noch andere Kontrollstrukturen außer "if-then"?
Vielleicht "switch-case"?

Wenn nicht, wirst Du wohl ein etwas komplexeres "if-then" Ungetüm verfassen müssen wie:

if number > 15 AND number 16 AND < 18 then
##17
...
end if


Oder so ähnlich, ich kenne mich in der Fläsch Syntax nicht aus...

Aber ich denke, Du verstehst was ich meine (falls ich richtig verstanden habe, was Du meinst )


Gruß

Klaus
0
Klaus Major24.06.0513:29
Jetzt sind doch tatsächlich 2 Zeilen verschwunden, bzw. mein Skript verstümmelt worden, SCHEISS-PHP-Skript!!!

if number grösser 15 AND number kleiner 17 then...
## = 16
ELSE
if number grösser 16 AND kleiner 18 then...
## = 17
...
end if

So meinte ich das...


Gruß

Klaus
0
Jaguar1
Jaguar124.06.0513:34
Entschuldigung @@ maxefaxe
„Die Menschen sind nicht immer was sie scheinen, aber selten etwas besseres.“
0
Maxefaxe24.06.0515:07
Jaguar1
Dankeschön

Das Problem ist, das die Variable wohl nicht ankommt. Auch wenn die txt-Datei nicht existiert, springt er zu Szene 1 was ja nur passieren sollte wenn eine Zahl größer 15 erkannt wurde.

Die Frage ist wie ich das Ziel korrekt angebe und den Syntax so anlege das er nur zu Szene 1 geht wenn 16 oder höher vorhanden ist. (was nicht der Fall sein kann)
0
rofl
rofl24.06.0515:26
Kannst du die ausgelesenen Variablen mal Versuchen auszugeben, denn ich denke das Problem ist die Wandlung des Textes in eine Zahl.
0
Maxefaxe24.06.0515:59
rofl

Wie soll ich sie ausgeben? Ich habe bisher Variablen nur in Textfelder geladen, sonst nichts.

Wohin soll die Variable? Einfach zu level0 wo der Film läuft oder mit einem speziellen Pfad für den IF-Befehl
0
Maxefaxe24.06.0516:00
rofl

Wie soll ich sie ausgeben? Ich habe bisher Variablen nur in Textfelder geladen, sonst nichts.

Wohin soll die Variable? Einfach zu level0 wo der Film läuft oder mit einem speziellen Pfad für den IF-Befehl? (welches Ziel?)
0
rofl
rofl24.06.0516:07
Kannst du nicht einfach ne MessageBox oder so aufmachen und dort die Zaheln ausgeben, bzw den Text den du einliest.

Wie gesagt kenne ich AS nicht, und weiss nicht wie es den Textinhalt interpretiert.
0
Maxefaxe24.06.0516:10
Und wie kann ich die Zahl aus der Textbox auslesen um aus ihr eine Aktion zu erstellen?
0
rofl
rofl24.06.0516:13
Ok das weiss ich jetzt nicht, ich dachte du liest die Zahlen ein, und dann?
Wie geht das bei AS? Oder setzt der die selbstständig in ein Textfeld?
0
Maxefaxe24.06.0516:38
Wenn ich text in ein textfeld lade heisst das Textfeld z.B. "text1"

Dann sage ich load movie > load variable > "meintext.txt" mit dem ziel "text1"

"meintext.txt" sieht dann so aus:

text1=hier kommt mein Text
0
rofl
rofl24.06.0518:00
Genau und lädst doch Zahlen? Oder?
D.h. er hat warscheinlich ein Problem aus der "5" als Zeichen eine 5 als Zahl zu machen.
0
Maxefaxe24.06.0518:12
Mag sein, aber wie kann man da anders ran gehen? Und warum springt er zu Szene 1 obwohl die Variable gar nicht erkannt wurde?
0
goldgeist
goldgeist24.06.0518:18
Hi, schon lustig flash 4 im Os 9 look zu sehen, das ist ja wie im Museum.

Also externe Daten:
1. Müssen die für flash 4 Url encoded sein.
2. Trennen musst die Vars mit &
3. die letzte Var nennst du z.B. geladen=true

das ganze sieht dann z.B. so aus:

var1=1&var2=hallo&geladen=true.

Nun lädst du die datei wie auch immer und lasst dann die zeitleiste loopen
zB

gotoandplay(15);
im Loopframe (hier nr 15) machst du zum testen einen trace
trace(_root.geladen).

Nun gibts mehrere Möglichkeiten
1. es wird undefined aussgegeben. dann stimmt der pfad nicht oder die datei konnte nicht gelesen werden oder du hast dich mit dem namen der var vertippt.
2.
undefined
undefined
true

flash hat ein paar millisekunden gebraucht und nach dem 2ten loop die var gefunden. Hier ist noch das variablenskoping zu beachten. In welche zeitleiste lädst du die Vars? in root? oder woanders hin? Dann musst du auch da abfragen...

wenn also true gezeigt wirst springst du in einen auswertenden frame
da kannst Du dann if (_root.var1 == 16) { gotoandplay(wasweissich) }

anlegen.

sorry, den alten slashsyntax weiss ich schon gar nicht mehr. wenn deine Abfragen nicht hinhauen immer mit trace testen...

0
goldgeist
goldgeist24.06.0518:21
ach ja rofl hat recht, kann sein, das die vars als falscher typ erkannt werden. also 5 als String Fuenf und nicht als Nummer 5. Dafür gibts natürlich methoden. Musst halt mal in die Hilfe gucken... Ich weiss das für Version 4 nicht mehr.
0
rofl
rofl24.06.0518:35
Ah endlich jemand mit AS Erfahrung (kürzt man das eigentlich AS ab?=)
0
Maxefaxe24.06.0518:41
goldgeist

Danke. Mal schauen ob ich das realisieren kann. Darauf wäre ich wohl alleine nie gekommen.

Flash4
Ich mach normal nur einfache Filme und Navigationen in Flash und die Upgradepreise von Macromedia haben mich in der Vergangenheit daran gehindert mir eine neuere Version zu kaufen. Bisher lief auch immer alles mit der ollen Version.
0
Maxefaxe24.06.0518:59
Gäbe es eine einfachere Methode dem Flashfilm von außen zu vermitteln wie weit er spielen soll?
0
goldgeist
goldgeist24.06.0519:07
wenns in HTML eingebettet ist kannst Du vars über den Querysting mitgeben. Das sollten dann aber nur wenige sein.

da wo der film im html die URL bekommt hängste das an:

deinfilm.swf?var1=dies&var2=das&geladen=true

musste doppelt machen für embed und objekt. darf auch nicht lang sein. das restliche prozedere ist gleich.

dann gäbe es noch liveconnect, das funktioniert aber nicht mit allen Browsern und ich habs ewig nicht genutzt. Mit dem befehl sfcommand oder so konnte man da dies oder das machen.

Aber das Prozedere nach der Datenübergabe is immer gleich.

0
Maxefaxe25.06.0514:09
Das Beispiel von Goldgeist übersteigt meine Möglichkeiten. Da die Zahl in der txt-Datei nicht als Zahl für die variable erkannt wird, ist es möglich die Anzahl von Zeichen der txt-datei als Variable zu nutzen? Sprich soll der Film bis Szene 15 laufen, enthält die.txt einfach 15 Zeichen. In Szene 16 wird abgefragt wie viele Zeichen die .txt hat und entschieden zu Szene 1 zu springen. Wäre das möglich? Wie sähe das aus? Ist das so simpler zu bewerkstelligen, ohne Loops oder Traces.

fs command
Das ganze läuft nur im IE6. Gibt es eine Möglichkeit aus der HTML-Datei mit fscommand auf die Timeline des Filmes zuzugreifen?
0
goldgeist
goldgeist25.06.0515:06
Die Actionscripthilfe sagt:




Number()

Verfügbarkeit

Flash Player 4; Verhalten geändert in Flash Player 7.

Verwendung


Number(ausdruck)


Parameter

ausdruck Ein Ausdruck, der in eine Zahl umgewandelt werden kann.

Rückgaben

Eine Zahl oder NaN (Not a Number, keine Zahl).

Beschreibung

Funktion; wandelt den Parameter ausdruck in eine Zahl um und gibt entsprechend den folgenden Regeln einen Wert zurück:

Wenn ausdruck eine Zahl ist, lautet der Rückgabewert ausdruck.
Wenn es sich bei ausdruck um einen Booleschen Wert handelt, der den Wert true aufweist, wird 1 zurückgegeben. Wenn ausdruck den Wert false aufweist, wird 0 zurückgegeben.
Wenn ausdruck ein String ist, versucht die Funktion, ausdruck als Dezimalzahl mit optionalem nachgestelltem Exponenten, d. h. 1,57505e-3, zu parsen.
Wenn ausdruck undefined ist, wird folgender Wert zurückgegeben:

In für Flash Player 6 oder früher veröffentlichten Dateien ist das Ergebnis 0.
In für Flash Player 7 oder später veröffentlichten Dateien ist das Ergebnis NaN.

Mit dieser Funktion können Flash 4-Dateien umgewandelt werden, die veraltete Operatoren enthalten und in die Flash-Authoring-Umgebung ab Version 5 importiert werden. Weitere Informationen hierzu finden Sie unter & (bitweiser AND-Operator).
0
goldgeist
goldgeist25.06.0515:06
umgekehrt gibt es String()
0
goldgeist
goldgeist25.06.0515:12
ich glaub aber eher, daas bei Dir gar nix ankommt. Was spuckt denn trace aus?
0
goldgeist
goldgeist25.06.0515:14
kann man hier eigentlich seinen Account ändern? Meine Daten stimmen gar nciht mehr.

hihi, Max, Du wohnst hier um die Ecke...
0
goldgeist
goldgeist25.06.0515:17
Ah, man kann ändern fein, bin wieder aktuell...
0
Maxefaxe05.07.0522:15
Hallo mal wieder.

Das Steuern der Anzahl der Szenen per Variabler funktioniert nun problemlos.
Inzwischen möchte ich gerne per Variabler die Länge einzelner Szenen steuern.
(jede Szene hat eine bestimmte Variable wie scenetimer5=. Die einzelnen Varianten sind per & getrennt und sind in einer zentralen txt.Datei)

Das geht auch bis zur Szene 10. Ab Szene 11 geht aber nix mehr. Kann es sein das Flash nur 10 Variable pro Film handhaben kann? Kann ich die Variablen die zuvor geladen wurden wieder loswerden? Kennt jemand dieses Problem?
0
disko
disko06.07.0502:42
Du kannst die Variablen auch mit irgend einem Trennungszeichen übergen und in Flash per Split trennen.

txt:
&var1=1|3|3|2|1|1&geladen=true&

in Flash:
neuvar = _root.var.split("|");



0
Maxefaxe06.07.0512:00
disko

Was hilft das bei meinem Problem? ich benötige so um die 40 Variablen. Was bringen die "|" Trennzeichen?
0
MacMark
MacMark06.07.0512:22
Maxefaxe
Besteht Deine Homepage nur aus Flash? Es ist ziemlich nervig und zeitraubend, immer die Animationen anzusehen, bis man endlich wieder auf ein Menü klicken kann, um auf einen anderen Bereich zu gelangen.

Weißt Du, daß Flash von Suchmaschinen komplett ignoriert wird. Von mir normalerweise übrigends auch

Ich würde zu einer Standardseite raten und die ganzen tollen Flashanimationen auf einen Unterbereich legen, den man freiwillig anschauen kann. Nichts ist grausamer, als Besuchern ständig lange Ladezeiten und nur beim ersten Mal witzige, ab dem zweiten Besuch dann aber nervtötende zeitraubende Animationen aufzuwingen.

Flash hat sicher sinnvolle Anwendungsgebiete, aber nicht als Homepage-Navigationssystem. Geeignete Anwendungsgebiete sehe ich bei 3d-Modellen oder virtuellen Räume oder Produktpräsentationen und dergleichen.

Ich kenne Dich nicht und will Dich nicht persönlich hiermit angreifen, mir geht es nur um den technischen Aspekt und daß viele Seiten immer unzumutbarer werden durch Flash.

Ich bin für barrierefreies Internet.
„@macmark_de“
0
Maxefaxe06.07.0512:44
MacMark
Bevor du meckerst solltest Du lieber den Anfang dieses Freds lesen. Hier geht es mitnichten um eine Homepage, sondern um Bildschirmwerbung die natürlich mehr hermachen soll als HTML-Seiten. Es geht um dynamische Flashseiten mit beliebig vielen Angeboten in beliebiger Länge die mit einer Software gepflegt werden kann ohne Flash zu verwenden.

Manchmal geht mir deine Oberlehrerart echt auf den Keks.

Mein Problem
Anscheinend macht Flash nach dem laden der 20ten Variable dicht und ignoriert weiterere Versuche welche zu laden. Leider sehe ich keine Möglichkeit die alten Variablen loszuwerden. bei "load movie" gibt es ja die Möglichkeit "unload Movie". Leider gibt es wohl kein "unload variables" Scheiße
0
Maxefaxe06.07.0512:56
Es sind wohl doch insgesamt 50 Variablen die er schluckt, aber das macht es nicht viel besser. Jetzt kann ich zwar ein paar Szenen mehr abfragen, sie aber nicht in ihrer Länger verändern:-((
0
MacMark
MacMark06.07.0514:05
Maxefaxe
Ich hatte mich auf www.maxefaxe.de bezogen, nicht auf Dein hier thematisiertes Problem.
„@macmark_de“
0
Maxefaxe06.07.0516:21
Ich habe mal die Testversion von Flash MX 2004 geladen. Das Problem besteht dort weiterhin. Die Variablen werden weiterhin nur bis zu 10en Szene richtig verarbeitet/importiert.

Spielt auch keine Rolle in welches Flashformat (4,5,6,7) ich exportiere. Dummerweise hat Macromedia die Textcodierung bei Version 7 umgestellt. Beim Import der Textfelder werden Sonderzeichen falsch dargestellt. Tolle Leistung.

Schwach finde ich das beim Öffnen älterer Flash-Dokumente der Syntax nicht aktualisiert wird. Alle Aktionen mit Tastatursteuerung funktionieren nicht mehr da der Befehl "on keypress" wohl nicht mehr existiert. Eine Konvertierung wird nicht einmal vorgeschlagen, noch wird eine Fehlermeldung angezeigt.

So bekommen die kein Geld von mir für ein Update.:-&
0
goldgeist
goldgeist06.07.0516:36
speicher die texte einfach in utf-8 das ist seit 6 oder 7 standard. Kannste in BBedit machen.
ansonsten URL ecoden und mit unescape() umwandeln

Mir ist nicht bekannt, das es eine Scenenbeschränkung gibt. Auch kannst Du deutlich mehr als 10 Vars importieren.
Falls nach der 10ten was hakt liegts eher an der elften Variable. Vielleicht ein & vergessen oider sonderzeichen im spiel.

Ausserdem bist du hier im komplett falschen Film, hier kriegst Du auf sowas keine Vernünftigen Antworten. Brobier mal Flashforum oder sowas. Da ist man besser aufgehoben.

Gruss, da Nachba
0
noelboss
noelboss06.07.0516:45
Also ich hab mir jetzt nicht mehr den ganzen Thread durchgelesen aber hier mal ne Idee:

irgendwo setzt du eine Variable:

v ar _root.meineVar = 15;

Du kannst die Variable auch von extern übergeben. Im HTML wo das Flash eingebunden ist, hinter die URL des Flashfiles noch die Variable(n) anhängen und zwar im PARAM und EMBEDED Tag...:

(P ARAM NAME=movie VALUE= "movie.swf?meineVar=15&varN=16")
(E MBED src="movie.swf?meineVar=15&varN=1")

Dann im Flash folgendes:

i f (_root.meineVar == 15) {
t race("Variable = 15, mache dies");
} e lse if (_root.meineVar == 15) {
trace("Variable = 16, mache jenes");
} e lse {
t race("Variable = "+ meineVar+" mache nichts");
}

das geht auch mit einem Switch:

s witch (_root.meineVar){

c ase 15:
t race("Variable = 15, mache dies");
b reak;

c ase 16:
t race("Variable = 16, mache jenes");
b reak;

d efault:
t race("Variable = "+ meineVar+" mache nichts");
b reak;
}


Sollte es noch ein Problem wegen Zahlen geben:

_root.meineVar = parseInt(_root.meineVar);

und um eine Var aus eine Textfeld auszulesen
einfach ein Textfeld machen und diesem einen namen
geben und dann kann man das so auslesen:

_root.meineVar = _root.meinTextName.text;

Viel Spass...
0
Maxefaxe06.07.0517:40
goldgeist

Isch schwör isch hab kein Fehler gemacht! Alle vars sind mit & getrennt. Auch wenn ich in Szene 11 eine alte var verwenden will macht er es nicht. Sobald ich Szene 11 verschiebe und zur 2ten Szene mache klappt es. Dafür klappt es dann halt mit Szene 2 nicht mehr die nun auf Position 11 steht. Ist wirklich zum Haare raufen.
0
Maxefaxe06.07.0518:13
Anscheinend kann Flash nur 20 Variablen pro Timeline verkraften.

Sobald ich in Szene 11 die Var innerhalb eines Movieclips lade (die haben ja eine eigene Timeline) und nicht bei level0, geht es. Dumm ist dann nur, das ich keine Labels mehr anspringen kann. Ich bin dann gezwungen die Absolute Frames anzugeben (Gehe zu _level0 Frame 10000 um Szene 8 zu treffen)

Ist zwar dreckig, geht aber.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.