mc kopieren aber ohne Script

Heelix

Grünschnabel
Hallo ihr Flasher,

Einleitung:
ich mache gerade ein FH Projekt und möchte eine Pizza mit Flash machen, die man selber belegen kann. Stellt euch einen Online-Pizzadienst vor, bei dem ihr die Pizza selber belegen dürft und dann kommt sie so zu euch nach Hause.
Problem:
Der belegbare Teig hat folgendes Skript:
on (press) {
trace ("dupliziere" + _global.produkt)
name = "P_" + _global.tiefe
_global.produkt.duplicateMovieClip(name, _global.tiefe);
_root[name]._x = _xmouse;
_root[name]._y = _ymouse;
_root[name]._rotation= random(180);
_global.tiefe ++;
}


Die Salami zum Beispiel:

on (press) {

_global.produkt = this;
trace(_global.produkt);

}

Das Problem ist jetzt, das der Movieclip zwar auf die Pizza dupliziert wird, jedoch mit Script. Wenn jetzt die Salami auf dem Teig liegt und ich Pilse hinzufügen will und dabei aus versehen auf die schon liegende Pizza klicke, dann kommt beim Klick wieder Salami anstatt Pilse.
Ich hoffe ihr versteht mich. Nochmal anders:
Ich möchte das nur das Bild der Salami auf dem Teig liegen bleibt, und dabei das Script nicht dupliziert wird.

Bitte:
Falls jemand eine Lösung hat, bitte das Script erklären. Ich möchte nicht die Lösung in mein Projekt einfügen, ich will es auch verstehen. Das bringt mir wesentlich mehr als das Script.

Danke.

Zur Info:
Pizza ist ein Ofengericht, dass auf einem Hefe-Wasser-Mehl-Teig basiert. Obenauf liegen dann Zutaten wie Salami, Käse, Pilse, Schinken u.s.w
Nur falls das jemand noch nie gegessen oder gesehen hat. :)


Ach so, arbeite mit Flash MX und Win XP
 
Hi,

in solchen Fällen arbeitet man möglichst nicht mit duplicateMovieClip, sondern mit attachMovie, da exakte Duplikate von Instanzen (inklusiver Member, Listener usw.) nicht immer gewünscht sind.

Ich kann hier (Flash 8) leider nicht für MX speichern, habe aber dennoch mal ein Beispiel für MX2004 angehängt (vielleicht ist ja jemand so nett, und wandelt Dir die Datei nochmal um). Du kannst Mit der Maus Zutaten, die mit attachMovie erzeugt werden, auf die Pizza ziehen (und zwar beliebig viele ;)). Soll ein Belag wieder gelöscht werden, so kannst Du das mit einem Klick (bei Belägen auf der Pizza) machen.

Vorgehensweise:
  • Beim Klick auf eine der Instanzen von "käse", "salami" oder "oliven" wird per attachMovie eine neue Instanz des fraglichen Objektes aus der Bibliothek auf die Bühne geholt

  • Diese Instanz lässt sich mit der Maus verschieben, und zwar so lange, bis (mit dem MouseListener "l") die Maustaste losgelassen wird

  • Befindet sich dabei das Mauspfeil auf der Pizza, bleibt der Belag liegen - andernfalls wird er sofort wieder gelöscht.

  • Bleibt ein Belag auf der Pizza liegen, so bekommt er einen MouseHandler (onPress), mit dem er sich (removeMovieClip) wieder entfernen lässt

Gruß
.
 

Anhänge

WOW! Vielen vielen Dank, für die schnelle und präzise Antwort. Ich habe es sogar weitesgehend verstanden, auch wenn ich niemals auf die Idee gekommen wäre, dies so zu machen. Die Datei konnte ich auch problemlos öffnen.
Jetzt habe ich natürlich Blut geleckt und möchte noch mehr machen.

1. Könnte man auch eine skalierung einbauen? Das die Salami klein im Vorschaumodus ist und sobald ich sie anfasse, wird sie auf 200% skaliert. Dann könnte man rechts die Zutaten übersichtlich darstellen und wenn man es auf die Pizza legt, sieht man sie schön groß. Geht sowas?
2. Kann man zum Schluß eine Art "Screenshot" der Pizza machen, so dass man bei Klick auf den Bestellbutton die Pizza als fertiges Bild hat?

Falls das nicht geht, wäre das nicht schlimm, es wäre nur eine nette Idee.

Noch mal vielen Dank für die Antwort.
 
Hi,

1. Ja, skaliere die Dinger mit _xscale und _yscale einfach sofort nach dem Instanzieren runter und nach dem Ablegen wieder hoch (direkt nach dem stopDrag). Die Clips, die von Anfang an auf der Bühne liegen, kannst Du natürlich schon direkt mit dem Transformieren-Werkzeug verkleinern.

2. Unterhalb Flash 8 nur "indirekt": Lege am besten ein Array für alle Zutaten an und merke Dir darin die Arten und Positionen der Sachen, die Du auf die Pizza gelegt hast (wenn etwas gelöscht wird, musst Du das natürlich wieder aus dem Array nehmen - alternativ kannst Du auch alle Objekte in _root abfragen, die mit "item" beginnen). Beim Bestellvorgang musst Du das ganze dann wieder rekonstruieren, indem Du die Pizza und sämtliche Zutaten im Array darüber instanzierst. Wenn ich Zeit habe, poste ich auch dazu mal ein Beispiel.

Gruß
.
 
Zurück