Bild drehen, Zähler hochzählen wenn ein Objekt über anderem


TripleM

Mitglied
Hallo,

ich bin ziemlich neu was Flash angeht, möchte jetzt aber im Zusammenhang mit Projekttagen in unserer Vorschule als Elternbeitrag ein kleines Flash erstellen, mit dem sich die Kids eine Waagschale mit Lebensmitteln füllen können um zu sehen, wie man sich gesund ernähren kann. Dabei möchte ich auf keine vorgefertigten Lösungen aus dem Netz zurückgreifen, da wir zuerst mit den Kleinen zusammen die Lebensmittel selber fotografieren und dann diese Bilder verwenden wollen, und auch andere Informationen selbst beschaffen wollen.

Mit Handbuch, der Hilfe und den Lektionen von Flash 5 habe ich auch schon einiges geschafft (auch im Forum habe ich schon gesucht), aber an den Details hapert es; hier was ich am Ende will, was ich schon habe, und meine Fragen, vielleicht mag mir ja jemand ein wenig helfen?

Ich will ein Bild einer Waagschale, daneben mehrere Objekte (Bilder von unterschiedlichsten Lebensmitteln). Jetzt soll man die Objekte mit der Maus auf die Waage ziehen können, am Besten auch noch drehen. In einem kleinen Counter am Bildrand soll für jedes Objekt, das auf die Waage dazukommt, eine dazugehörige bestimmte Zahl hochgezählt werden (die Kalorienzahl), wenn man es wieder wegnimmt soll die zahl wieder runtergehen.

Das mit den Objekten auf die Waagschale ziehen habe ich ziemlich einfach hingekriegt, ich habe zwei Ebenen, auf einer liegt das Essen, darunter die Waagschale, und mit "mousepress" "startdrag" und "mouserelease" "stopdrag" kann man die Objekte darauf ziehen.

Was ich gar nicht kapiere, wie ich dazu die Zählerfunktion machen soll (also in etwa Zähler am Anfang=0, bei einer banane auf der Waagschale soll er 330 anzeigen, bei zweien 660 usw...). Ich finde im ganzen Flash nochnichtmal eine Funktion um Zahlenwerte zu verwenden, nur Bilder, Objekte, Texte.

Und was ein super Bonbon wäre, wenns aber gar nicht geht nicht sein muss, wäre, wenn man mit einem Rechtsklick auf das Objekt selbiges drehen könnte. Und zwar, wenn es sich während man rechtsklickt langsam drehen würde bis man wieder loslässt. Sollte das jedoch nicht gehen, kann ich das auch einfacher wenn auch nicht so schön lösen, indem ich einfach bei einem einfachen Rechtsklick das Bild einfach um einen bestimmten Ruck drehe, wobei ich den drehwinkel einfach zuvor durch ein Bewegungstween festlege?

Ich weiss, ich verlange viel für jemanden der kaum eine Ahnung hat, aber ich kann mir leider keinen leisten, der uns sowas programmiert, und ich kenne auch niemanden, der sowas kann. Ausserdem wollte ich selber etwas dazu beitragen und hatte mir das wohl etwas zu leicht vorgestellt, das letzte Mal als ich etwas in der Art gemacht hatte war vor Jahren mit "Klick'n'Play".

Für Hilfe wäre ich echt dankbar!

Danke!
 

x_Red_Eagle_x

Erfahrenes Mitglied
Code:
//initalisierung
Count=0;
bananenStep=330;
...
//onRelease
this.mc.onRelease()=function{checkAndCount( mc, bananenStep);}

function checkAndCount( cur, step )
{
  //Testen ob MC auf der Waage ist
  if(mcWaage.hitTest(curMc))
  {
     //Counter erhöhen oder sonstiges
    Count+=step;
  }
}
Ich hoffe das hilft dir bei deinem Counter-Problem weiter.
mfg
 

TripleM

Mitglied
Danke!

Vielen lieben Dank für die prompte Antwort. Werde mal versuchen was ich damit zustande bringe. Wenn was nicht klar ist bin ich so frei und melde mich nochmal! CU
 

TripleM

Mitglied
Ich raffe das nicht, bin ich zu blöde?

Original geschrieben von x_Red_Eagle_x
Code:
//initalisierung
Count=0;
bananenStep=330;
...
//onRelease
this.mc.onRelease()=function{checkAndCount( mc, bananenStep);}

function checkAndCount( cur, step )
{
  //Testen ob MC auf der Waage ist
  if(mcWaage.hitTest(curMc))
  {
     //Counter erhöhen oder sonstiges
    Count+=step;
  }
}

Ich hoffe das hilft dir bei deinem Counter-Problem weiter.
mfg

Bedankt hatte ich mich ja schonmal, aber nach einer endlosen Nacht der Versuche bin ich jetzt kurz davor,d en Löffel zu schmeissen. Vielleicht bin ich ja einfach nur zu doof und ich sollte es bei ausgeschnittenen Bildchen und Handarbeit belassen. Aber vielleicht versteht auch jemand, was ich falsch mache?

Habe Deinen Code jetzt so aufgefasst und folgendes gemacht:

ich habe ein Symbol als Filmsequenz (FBananen) erstellt, die eine Schaltfläche (SBananen) enthält (so wird in der Hilfe beschrieben dass man sich selbst drag-bare Objekte erstellt, und das draggen funktioniert so auch), und davon dann eine Instanz (Banane1) auf eine Ebene (Obst) gelegt.

In einer Ebene drunter (Waage) liegt die Schaltfläche "Waagschale".

Und ich habe einen Dynamischen Text auf der Bühne,d er sich "CountBananen" nennt.

In diesem Bild setze ich auf der untersten Ebene "Hintergrund" die Variablen BananenStep und CountBananen wie geraten.

Ich habe jetzt versucht deinen Code zu pasten, aber erstmal will er die Zeile
this.mc.onRelease()=function{checkAndCount( mc, bananenStep);}
überhaupt nie schlucken, egal wo und wie ich sie einfüge, er bringt immer eine Fehlermeldung:
"Symbol=FBananen, Ebene=Ebene 1, Bild=1: Line 4: Die linke Seite eines Zuweisungsoperators muss eine Variable oder eine Eigenschaft sein.
this.mc.onRelease()=function{checkAndCount( mc, BananenStep);}"

Ich habe es dann mal versucht so zu schreiben (die Codezeilen copy&paste ich 1:1 aus dem Codefenster, also genau so steht das jetzt bei mir):

on (press) {
startDrag ("/Banane1");
}
on (release) {
this.mc = "function{checkAndCount( mc, BananenStep);}";
}

natürlich mit der Funktion drin, da kamen dann keine Syntax-Fehlermeldungen mehr, aber gemacht mit dem Bananen-Counter hat das Script gar nichts.

Also habe ich mir gedacht, ich versuche zu verstehen, was Dein Code macht und setze ihn mir, nachdem ich ausführlichst die Dokumentationen zu hitTest und Additionen durchgelesen hatte im "Dummie-Modus" selbst zusammen. Das sah dann so aus:

on (release) {
if (Banane1.hitTest( Waagschale)) {
CountBananen+=BananenStep}
}

Aber da ist dann auch nichts passiert. Und inzwischen bin ich echt am Ende mit meinem Latein. Liegt es daran, dass die Banane und die Waagschale nicht auf einer Ebene sind? Liegt es daran, dass ich irgendwo im Code die falschen Namen vergeben habe (FBananen, SBananen, Banane1 usw)? Oder kann es sein, dass ich anstatt Schaltflächen Filmsequenzen oder Grafiken oder weiss der Geier was verwenden muss? Ich weiss gar nicht mehr genau, was ich alles schon ausprobiert habe umzutauschen, umzubenennen und umzumodeln. Wenn mir jetzt keiner hilft, kann ich mir nicht mal mehr selber helfen.

Vielleicht packe ich ja doch wieder "Klick'n'Play" aus und installiere mir irgendwo nochmal Windows 95.

:-(((

Eure verzweifelte TripleM
 

TripleM

Mitglied
Nunja, habe nur Flash 5 zur Verfügung ...

... (stand auch in meinem Anfangspost) könnte es daran liegen, dass ich jetzt

a) Deinen Download nicht öffnen konnte und
b) deshalb auch Dein Code bei mir nicht funzte?

Sehr schade eigentlich, als ich Deine Antwort sah hatte ich schon gedacht you saved my day, aber trotzdem tausend Dank.

:(

Gruß TripleM
 

x_Red_Eagle_x

Erfahrenes Mitglied
Dies wäre eine Möglichkeit -> das mit dem Flash 5 hab ich ganz überlesen (sorry). Hab noch nie mit Flash 5 gearbeitet, bin gleich mit MX eingestiegen, aber was ich weiß kann man bei Flash 5 Schaltflächen keine Instanznamen zuweisen.
Tja da bin ich mit meinem Latein am Ende.
mfg
 

TripleM

Mitglied
Trotzdem Danke!

Ich lade mir gerade mal die Trialversion runter ... wenn's damit dann werde ich schon einen Weg finden die hier davon zu überzeugen umzusteigen. Schaun' wir mal.

Wenns an den Instanznamen lag: spitze! Dann wirst Du hoffentlich keine doofen Fragen mehr von mir lesen müssen ;)

Gibt's hier irgendwo im Forum die Möglichkeit hilfreiche Mitglieder zu belobigen? Hast Dir 'nen Orden verdient.

CU, TripleM
 

TripleM

Mitglied
Damit funkts

Danke schön. Mit Flash MX 2004 Demo klappt's. Jetzt funktioniert Dein Code auch so wie ich ihn ursprünglich eingefügt hatte. Habe jetzt nur ein kleines Problem: wenn man die Banane wieder runterzieht ist der Counter trotzdem noch oben - der sollte ja aber, wenn man was von der Waage runter und was anderes draufzieht wieder runter und dann mit dem neuen Wert hoch gehen ... ist sonst wenig pädagogisch wertvoll, wenn zwei Bananen mehr Kalorien anzeigen als ein Hamburger ;)

Da würde es ja ein negativer hittest der dann den count senkt tun.

Aber auch wenn man die Dinger auf der Waagschale ein wenig rumschiebt steigt der Counter immer weiter an. Und wie mache ich dem Ding den Unterschied zwischen "auf die Waage draufziehen" (count+) und "auf der Waage rumschieben" (count=) klar?

Könnte man es nicht in dem Fall besser lösen, indem man den Counter hochsetzt, wenn ein Objekt beim draggen den Rand der Waage zum ersten/dritten/fünften... Mal (=nach innen) passiert, und ihn wieder runtersetzt, wenn es den Rand der Waage zum zweiten/vierten/sechsten... Mal passiert.

Oder ist das zu umständlich? Dann würde ein "Berechnen"-Button, der erst den Count immer auf 0 setzt und dann alle Objekte auf der Waage zum Zeitpunkt der Berechnung addiert mehr Sinn für meine Absichten ergeben, oder nicht?

Grüße, TripleM
 

Forum-Statistiken

Themen
272.363
Beiträge
1.558.646
Mitglieder
187.837
Neuestes Mitglied
Kalle P