mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 19.03.2024 03:41 Benutzername: Passwort: Auto-Login

Thema: Flash Actionscript vom 31.01.2004


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Multimedia -> Flash Actionscript
Seite: 1, 2  Weiter
Autor Nachricht
stefan0512
Threadersteller

Dabei seit: 30.12.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Sa 31.01.2004 18:34
Titel

Flash Actionscript

Antworten mit Zitat Zum Seitenanfang

Hallo,
möchte einer Schaltfläche einen bestimmten Wert zu ordnen, der später in ein Textfeld eingelesen wird. Hat das schon mal wer hinbekommen?
Die Zwischenspeicherung soll über die localSharedObject Funktion funktionieren. Wäre klasse wenn mir da jemand Ideen oder Beispiele liefern könnte.
Danke
  View user's profile Private Nachricht senden
tuxedo

Dabei seit: 10.10.2002
Ort: ~/
Alter: 51
Geschlecht: -
Verfasst Sa 31.01.2004 18:55
Titel

Antworten mit Zitat Zum Seitenanfang

hi....

also mit dem sharedObject zu arbeiten ist kein problem. mich würde interessieren, was du genau vorhast. deine beschreibung ist etwas schwammig, so dass ich mir darunter nicht direkt was vorstellen kann....

was soll der button bewirken? das aufrufen von daten aus einem sharedObject (falls vorhanden) und diese dann in ein textfeld schreiben? dynamische oder statische texte(werden diese vom user eingegeben oder liegen die daten vor)?
wie wird das textfeld referenziert? eingabefeld oder nur anzeigen erwünscht?

gib mal nen überblick, dann kann ich dir sicher weiterhelfen!

gruss

tux
  View user's profile Private Nachricht senden
Anzeige
Anzeige
stefan0512
Threadersteller

Dabei seit: 30.12.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Sa 31.01.2004 23:57
Titel

Antworten mit Zitat Zum Seitenanfang

Hi
Also ich habe z.b. 10 Szenen jede Szene besitzt 2 Schaltflächen (z.B. BMW oder VW)drücke ich auf einer der Schaltflächen gelange ich zu der nächsten Szene hier dann wieder die Auswahlmöglichkeit mit anderen Features. In der letzten Szene sollen dann die Schritte die ich gemacht habe dargestellt werden.

Das ganze soll wie eine Art Konfigurator sein, oder wie ein Warenkorb nur das ich keine Daten in Textfelder eingebe sondern das die Daten durch den Klick gespeichert werden und am Schluss ausgeben werden. Jetzt eben die Frage! Wie kann ich der Schaltfläche sagen, dass ich bei der ersten Szene z.B. auf BMW geklickt habe?
Danke für deine Hilfe...
  View user's profile Private Nachricht senden
tuxedo

Dabei seit: 10.10.2002
Ort: ~/
Alter: 51
Geschlecht: -
Verfasst So 01.02.2004 20:07
Titel

Antworten mit Zitat Zum Seitenanfang

hi...

habe mich grade mal hingesetzt und schnell was zusammengehackt...
dürfte dir als beispiel ganz nützlich sein. wenn du willst, benutze ruhig den source und erweitere ihn nach deinen anforderungen....


Code:

/*
funktion übernimmt folgendes:
check, ob array local gespeichert wurde.
falls ja, füllen des carArrays mit den vorhandenen
daten. ansonsten:
inititalisieren eines arrays. in diesem wird die
jeweilige auswahl des users gespeichert. um zwischen
bmw und vw zu unterscheiden, wird in jeder position ein
object erstellt, welches einen boolschen wert aufnimmt.
selected kann benutzt werden, um bei der auwertung zu
schauen, ob alle fragen beantwortet wurden.
*/
initCarCheck = function (howMuch) {
   _global.car_array = new Array();
   var storeCarData = SharedObject.getLocal(carData);
   var checkIt = storeCarData.data.values;
   if (checkIt != null) {
      for (var i = 0; i<checkIt.length; i++) {
         car_array[i] = new Object();
         car_array[i].selected = checkIt[i].selected;
         car_array[i].bmw = checkIt[i].bmw;
         car_array[i].vw = checkIt[i].vw;
      }
   } else {
      for (var i = 0; i<howMuch; i++) {
         car_array[i] = new Object();
         car_array[i].selected = false;
         car_array[i].bmw = false;
         car_array[i].vw = false;
      }
   }
};
/*
die funktion, welche je nach übergebenem parameter
den gewählten wagen auf true setzt.
arrayPosition == position
value == bmw oder vw
-----
button-code wäre z.b.:
-----
on (press){
   setChoise (0,bmw);
}
*/
_global.setChoise = function(arrayPosition, value) {
   car_array[arrayPosition][value] = true;
   car_array[arrayPosition].selected = true;
};
/*
auswertung der antworten
erste schleife checkt, ob antwort gegeben wurde, wenn nicht
wird die auswertung abgebrochen.
wurde frage beantwortet, checkt die nächste schleife ob
bmw oder vw gewählt wurde, und gibt dies aus.
-----
button-code:
-----
on (press){
   getResult();
}
*/
_global.getResult = function() {
   for (var i = 0; i<car_array.length; i++) {
      if (!car_array[i].selected) {
         trace(frage +i+ wurde nicht beantwortet);
         // dein fehlercode
         break;
      } else {
         if (!car_array[i].bmw) {
            trace(antwort frage +i+ war vw);
            // dein code
         } else {
            trace(antwort frage +i+ war bmw);
            // dein code
         }
      }
   }
   storeData();
};
/*
schreiben des arrays auf platte via
sharedObject.
*/
_global.storeData = function() {
   var storeCarData = SharedObject.getLocal(carData);
   storeCarData.data.values = car_array;
   storeCarData.flush();
};
/*
aufrufen der initialisierungsfunktion
parameter definiert die anzahl der sektionen,
in deinem/diesem fall 10
*/
initCarCheck(10);



die kommentare helfen dir sicherlich, das konzept zu verstehen. entschuldige das diese so hingerotzt aussehen, aber ich hab nicht viel zeit gehabt...hoffe du kommst klar....Lächel

zum testen des codes kannst du folgendes machen:
schmeisse x-buttons auf deine bühne, gib einem den funktionsaufruf für getResult, den restlichen nach gezeigtem muster werte....
wenn du dann damit rumspielst und auf result klickst, gibt dir ein trace die analyse aus. dementsprechend kannst du dann den kram handeln und abfangen...

die traces dienen dir nur mal dazu, die funktionen zu verstehen. kannst du beruhigt rauslöschen.

vielleicht wird jetzt der eine oder andere eine vereinfachung einbauen können (zumindest beim zurückschreiben der sharedObject-daten. aber mir ist nix anderes eingefallen..*zwinker*)....da wäre natürlich auch ich einem hinweis nicht abgeneigt, denn wir lernen ja alle nie aus...

schönen abend

gruss

tux
  View user's profile Private Nachricht senden
tuxedo

Dabei seit: 10.10.2002
Ort: ~/
Alter: 51
Geschlecht: -
Verfasst Mo 02.02.2004 12:18
Titel

Antworten mit Zitat Zum Seitenanfang

hi stefan,
werde dir trotz pn hier antworten, damit andere leute eventuell auch was davon haben (verschiedene probleme u.u. selber lösungsansatz).

also. die verschiedenen funktionen solltest du in der hauptzeitleiste im ersten frame anlegen. diese ebene benennst du "as" oder so. was ich empfehlenswerter (aber für einen einstieg vielleicht auch mühseliger) finde, ist das schreiben der scripte extern, und das einbinden einer script-datei. (mit dem befehl "#include "deinScript.as"". ok, auf jedenfall solltest du funktionssammlungen möglichst zentral verwalten (kommt natürlich im einzelfall auf die verwendung an, aber wir gehen jetzt mal von nem ganz normalen lösungsansatz aus)....

also, im ersten frame legst du die funktionen ab (jetzt mal ohne kommentare, das sieht dann nicht so verwirrend aus)...
Code:

initCarCheck = function (howMuch) {
   _global.car_array = new Array();
   var storeCarData = SharedObject.getLocal(carData);
   var checkIt = storeCarData.data.values;
   if (checkIt != null) {
      for (var i = 0; i<checkIt.length; i++) {
         car_array[i] = new Object();
         car_array[i].selected = checkIt[i].selected;
         car_array[i].bmw = checkIt[i].bmw;
         car_array[i].vw = checkIt[i].vw;
      }
   } else {
      for (var i = 0; i<howMuch; i++) {
         car_array[i] = new Object();
         car_array[i].selected = false;
         car_array[i].bmw = false;
         car_array[i].vw = false;
      }
   }
};

_global.setChoise = function(arrayPosition, value) {
   car_array[arrayPosition][value] = true;
   car_array[arrayPosition].selected = true;
};

_global.getResult = function() {
   for (var i = 0; i<car_array.length; i++) {
      if (!car_array[i].selected) {
         trace(frage +i+ wurde nicht beantwortet);
         break;
      } else {
         if (!car_array[i].bmw) {
            trace(antwort frage +i+ war vw);
         } else {
            trace(antwort frage +i+ war bmw);
         }
      }
   }
   storeData();
};

_global.storeData = function() {
   var storeCarData = SharedObject.getLocal(carData);
   storeCarData.data.values = car_array;
   storeCarData.flush();
};


das ist erstmal alles. keine funktion funzt ohne funktionsaufruf. dies geschieht meistens durch event-handler (zb. eines buttons oder eines movieclips). die bekannten handler sind die on(xxx)-events. ok.
bis zu diesem.

weiter gehts...
die initialisierung deines fragecontainers (das array) wird erst durchgeführt, wenn du die dazugehörige funktion aufrufst, der funktionsaufruf lautet initCarCheck(parameter), parameter gibt in dieserm fall die anzahl der zu erstellenden objekte an (anders erklärt: 10 fragen, zehn objekte).
es empfiehlt sich natürlich, diese funktion am anfang des filmes aufzurufen. wenn du in der zeitleiste den funktionsaufruf startest, brauchst du keinen event-handler (es sei denn, du bindest die funktion an ein anderes objekt).
dies geschieht also an einer x-beliebigen stelle deines films mit
Code:

initCarCheck(10);


sobald dies aufgerufen wird, checkt die funktion:
- gibt es eine lokal gespeicherte datei, die bereits beantwortete fragen erhält?
wenn nein: erstelle ein neues array
wenn ja: lade die datei und aktualisiere das array im film

alles klar? gut...

also, du sagst du hast pro szene zwei buttons. einen für "bmw" und einen für "vw". jedem dieser buttons gibst du nun den funktionsaufruf setChoise(parameter1,parameter2), wobei parameter1 die szene markiert, parameter zwei den wagentyp. wichtig:da arrays immer bei null anfangen, heisst der aufruf für z.b. die erste szene entsprechend "0" und nicht "1", für die zweite "1" und nicht "2" usw.!!!!!

platziere also zwei buttons, und gebe dem ersten folgendes script mit:
Code:

on (press){
   setChoise (0,bmw);
}

und dem zweiten in der gleichen szene
Code:

on (press){
   setChoise (0,vw);
}


wenn nun der benutzer sich für einen typ entscheidet, setzt die funktion automatisch true (also gewählt) beim wagentyp und setzt ein flag für das benatworten der frage (selected).

ok, das ziehst du für deine zehn szenen durch.

am ende gibt es die auswertungsfunktion. diese wertet das array aus und schreibt die neuen werte lokal in das sharedObject (durch aufruf der funktion storeData()). der funktionsaufruf lautet in dem fall getResult().
nimm also einen button (oder schreibe es auf die zeitleiste, je nachdem wie du das verhalten auslösen willst) und gebe diesem den aufruf:
Code:

on (press){
   getResult();
}


das ist eigentlich alles.

noch ein tip:
lass die finger von szenen. dieses feature ist absolut unnötig und kostet nur dateivolumen. arbeite lieber mit gekapselten mcs, das heisst: lege auf der hauptzeitleiste zehn frames an (natürlich mit stop()*zwinker*, und auf jedem schlüsselbild baust du deinen frage-mc ein. das ist übersichtlicher und auf jeden fall einfacher zu handhaben....

desweiteren:
du kannst (und musst wahrscheinlich auch) die funktionen entsprechend erweitern (d.h. mit goto-befehlen und anderen spielereien), aber es sollte dir nur zeigen, wie die auswertung gut fuktionieren kann....

noch fragen?

gruss

tux
  View user's profile Private Nachricht senden
stefan0512
Threadersteller

Dabei seit: 30.12.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mo 02.02.2004 13:29
Titel

Antworten mit Zitat Zum Seitenanfang

Hi,
vielen Dank für deine Hilfe. Ein kleines Problem habe ich jetzt noch!!!

Im ersten Frame habe ich folgenden Code:

stop();
initCarCheck(10);
initCarCheck = function (howMuch) { _global.car_array = new Array();var storeCarData = SharedObject.getLocal("carData");var checkIt = storeCarData.data.values;if (checkIt != null) {for (var i = 0; i<checkIt.length; i++) {car_array[i] = new Object();car_array[i].selected = checkIt[i].selected;car_array[i].bmw = checkIt[i].bmw;car_array[i].vw = checkIt[i].vw;}} else {for (var i = 0; i<howMuch; i++) {car_array[i] = new Object();car_array[i].selected = false;car_array[i].bmw = false;car_array[i].vw = false;}}};
_global.setChoise = function(arrayPosition, value) {
car_array[arrayPosition][value] = true;
car_array[arrayPosition].selected = true;
};
_global.getResult = function() {
for (var i = 0; i<car_array.length; i++) {
if (!car_array[i].selected) {
trace("frage "+i+" wurde nicht beantwortet");
break;
} else {
if (!car_array[i].bmw) {
trace("antwort frage "+i+" war vw");
} else {
trace("antwort frage "+i+" war bmw");
}
}
}
storeData();
};
_global.storeData = function() {
var storeCarData = SharedObject.getLocal("carData");
storeCarData.data.values = car_array;
storeCarData.flush();
};

Hier habe ich wie beschrieben zwei Schaltflächen angelegt und folgenden Code angelegt:

on (press) {
setChoise("0", "bmw");
storeData();
gotoAndStop(2);
}

Zum Testen habe ich nun auf dem zweiten Frame ein dynamischen Textfeld mit den Instanznamen "in_text" geben.
hier dann wieder eine Schaltfläche mit dem Befehl

on (release) {
getResults();
in_text.text = "carData.data.name";
}

Drücke ich jetzt auf die Schaltfläche um das resultat zu bekommen steht im Textfeld
"cardata.data.name"

Mmmh wo liegt jetzt also noch mein Fehler, wenn ich den Code richtig lese werden die Daten doch im im SharedObject carData gespeichert. Diesen muß ich doch wie über die Funktion "getResult" oben beschrieben aufrufen oder nicht?

Stefan
  View user's profile Private Nachricht senden
tuxedo

Dabei seit: 10.10.2002
Ort: ~/
Alter: 51
Geschlecht: -
Verfasst Mo 02.02.2004 13:50
Titel

Antworten mit Zitat Zum Seitenanfang

ok...
hab das nochmal kurz nachgebaut....
schaus dir an:
klick

das müsste dir helfen...

gruss

tux
  View user's profile Private Nachricht senden
stefan0512
Threadersteller

Dabei seit: 30.12.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mo 02.02.2004 14:07
Titel

Antworten mit Zitat Zum Seitenanfang

Die Zip Datei ist beschädigt. Schicke es mir doch bitte an joshua0512@lycos.de oder sei so nett und überprüfe die ZIP Datei...

Danke
Stefan
  View user's profile Private Nachricht senden
 
Ähnliche Themen Flash CS3 und Actionscript -.-
Actionscript für Flash
actionscript in flash 4 und mx
Wie mache ich das mit Flash und ActionScript?
Flash und Actionscript Frage
[Flash] Variablenzuweisungen per ActionScript
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Multimedia


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.