Antworten auf deine Fragen:
Neues Thema erstellen

Buttonscript außerhalb eines Buttons?

Jormungand

VonAllemEtwas

Hi alle,
ich habe einen Button aus einem MC erstellt (um auch eine MouseOut-Animation zu bekommen :)). Im MC muss ja dafür wieder eine Schaltfläche sein, um die Funktion auszulösen.

Gibt es eine Möglichkeit, das Script nicht direkt auf die Schaltfläche zu legen, sondern z.B. auf den MC? Ich würde mir damit sparen, für jeden neuen Button ein neues Symbol anlegen zu müssen und kann stattdessen mit Instanzen eines Symbols arbeiten.

Grüße
Jormungand
 

4uwak

WEB?ViDEO?FOTO and more

AW: Buttonscript außerhalb eines Buttons?

ja also du bruachst nicht unbediengt eine schalt fläche es reicht wenn du einfach einen MovieCLIP Machst und ein script drauf legst, du könntest im diesem MovieClip eine unsichbare schlaftfläche rein legen aber das würde nur dazu dienen um den bereich festzulegen für den rollover oder rollout, alternativ kannst du auch in dem MovieClip einfach einen neuen MovieClip machen und ihn auf alpha 0 setzen dann hast du denn selben effect denn, denn sonst wenn du das nicht machst könnte es passieren das bei einer animation des buttons ungewünscht unterbricht
 

Jormungand

VonAllemEtwas

AW: Buttonscript außerhalb eines Buttons?

Danke 4uwak, aber ich glaub, du hast mich falsch verstanden.

Den Button habe ich bereits: Ich habe einen MC, in dem ein RollOver und ein RollOut als Animation liegen. Dazu ein Symbol, das als Schaltfläche deklariert ist und nur eine aktive Fläche hat (transparent ist).

Auf dieser Schaltfläche steht z.B.:
Code:
on(rollover) {
gotoAndPlay("in");
}
on(rollout) {
gotoAndPlay("out");
}
on(release) {
_root.gotoAndPlay(5);
}
Ich kann den Button nur einmal verwenden, da er beim Loslassen immer auf Bild 5 springt. Ich brauche also jedesmal ein neues Symbol für _root.gotoAndPlay(10); bzw. _root.gotoAndPlay(15); etc.
Ist es möglich, das Actionscript auf den MC zu legen, denn dann bräuchte ich nur diesen einen MC...
 

4uwak

WEB?ViDEO?FOTO and more

AW: Buttonscript außerhalb eines Buttons?

ja klar ist es möglich also so wie ich dich verstehe liegt der Code auf der unsichbaren schaltfläche, was aber total unnötig ist denn du kannst den einfach mal den Code ausschneiden und direct auf den MovieClip belegen hätte den selben effect, du nicht mal den Code ändern, viellleicht noch ein this immer davor
Code:
on(rollover) {
this.gotoAndPlay("in");
}
on(rollout) {
this.gotoAndPlay("out");
}
on(release) {
_root.gotoAndPlay(5);
}

also ich würde es so machen das ich dann einen button hab mit einener animation drin und den text auch als MC verschachtelt und dann mit einen instanznamen, und denn würde ich in die einzelnen schlüssel bilder die texte legen bsp. erstes bild "Home" text und ins zweite "Foto" usw. und im ersten bild noch ein stop(); und so bräuchte ich nur einen button zu erstellen für alle dann würde mein code so aussehen und der Code kommt dann dierect auf den MC button
Code:
//hier die button zu ordung 1 bis ... für die unterschiedlichen texte
onClipEvent(load){
this.txt.gotoAndStop(1);
}
on(rollover) {
this.gotoAndPlay("in");
}
on(rollout) {
this.gotoAndPlay("out");
}
//hier die verschiedenen befehle
on(release) {
_root.gotoAndPlay(5);
}
 

TomJay66

FlashFärber

AW: Buttonscript außerhalb eines Buttons?

Du kannst dir das "this" sparen, wenn du deinem MovieClip einen Instanznamen vergibt und diesen dann dirkt über die Hauptzeitleiste ansprichst. Beispielsweise nennst du deinen Button "steuer_btn", dann kannst du den Button in der Hauptzeitleiste folgendermaßen ansprechen:

steuer_btn.onRollOver = function(){
//tu irgendwas
}

Das hat den Vorteil, dass du das komplette Script in einem Keyframe hast und nicht wild verteilt auf -zig Buttons. Ist einfacher bei der Fehlersuche! ;)

Außerdem hast du dann einen wesentlich kleineren und übersichtlicheren Film, weil du nicht soviele MovieClips enthalten hast.
 

Jormungand

VonAllemEtwas

AW: Buttonscript außerhalb eines Buttons?

Super, ich hab beides ausprobiert und beides klappt.

Bisher habe ich immer Fehler bekommen, wenn ich on(release) usw. auf MCs gelegt habe, aber jetzt scheint es zu gehen! Danke 4uwak.

Alles AS auf ein Frame zu legen ist richtig elegant. Danke TomJay66.

Auch wenn folgende Fragen dämlich klingen. Ich habe nie verstanden, wann man
Code:
on(release){}
verwendet und wann
Code:
onRelease = function(){}
.
In welcher Situation verwendet man welches? Ist eines besser (geschickter, Platzsparender)? Oder sind beide das Gleiche mit verschiedenen Schreibweisen?

Grüße
Jormungand
 

TomJay66

FlashFärber

AW: Buttonscript außerhalb eines Buttons?

Alle beiden Anweisungen bewirken das selbe. Aber das erste Schnipselchen

PHP:
on(release){
//tu irgendwas
}

kannst du eben nur auf EIN MovieClip legen. Und das funktioniert dann nur für diesen speziellen Movieclip und du kannst dann auch nur dieses Movieclips steuern bzw. ansprechen. Und du musst dafür dem MC noch nicht mal einen Instanznamen vergeben.

Du kannst zwar bei Vergabe von Instanznamen dann auch Movieclips ausserhalb deines MC steuern, aber wenn du da nicht mit den Pfaden (z. B. _root.DeinMC01.DeinMCinnerhalb......) aufpasst, dann kannst du gerade bei etwas umfangreicheren Flash-Sachen echt verzweifeln.

Ich weiß, von was ich spreche. Ich habe letztes Jahr ein Custom-Tool für meinen Arbeitgeber entwickelt, mit dem man sich Inlineskates zusammenstellen bzw. "customizen" kann. In diesem Tool hatte ich die "Kleinigkeit" von knapp 25.000 Zeilen ActionScript. Und wenn du da einen Fehler machst und suchst den in -zig Movieclips, dann bekommst du irgendwann einen Vogel! Absolut nicht praktikabel! Von Erweiterungen will ich im ersten Fall gar nicht reden.

Wesentlich besser (weil global) ist dann schon diese Anweisung:

PHP:
DeinMC.onRelease = function(){
//tu irgendwas
}

So habe ich das auch in meinem Custom-Tool gemacht. Hier im zweiten Beispiel kannst du nämlich wesentlich einfacher auch auf andere Movieclips zugreifen (solange du diesen Instanznamen vergibst). Außerdem hast du alle Anweisungen zentral in einem Keyframe, was bei eventuellen Fehlern die Suche ziemlich erleichtert.

Und das ist dann eigentlich schon objektorientiertes Programmieren. Ich persönlich würde dir auf jeden Fall IMMER zur zweiten Version raten. Wie gesagt, bei kleinen Animationen ist das noch kein Problem. Aber spätestens, wenn du was komplexeres machen musst, kommst du mit der ersten Anweisung mächtig ins Schleudern!

Aber das entscheidet jeder Programmierer sowieso selbst.

Und dann kannst du dir z. B. eine globale Funktion schreiben, wenn du viele unterschiedliche Movieclips hast, die mehr oder weniger das gleiche machen sollen:

PHP:
//NICHT GETESTET - Nur als Anschauung gedacht
var aktiverMC:MovieClip;
 
function (bewegen){
aktiverMC._x = 100;
//du kannst hier auch wesentlich mehr reinschreiben
}
 
DeinMC01.onRelease = function(){
aktiverMC = DeinMC01;//legt "DeinMC01" als aktiven Movieclip fest.
bewegen();
}
 
DeinMC02.OnRelease = function(){
aktiverMC = DeinMC02;//legt "DeinMC02" als aktiven Movieclip fest.
bewegen();
}

Das hat den Vorteil, dass du mit relativ wenig Schreiberei viele Movieclips steuern kannst. Okay, das ist zwar jetzt nichts Weltbewegendes und auch nur zur Anschauung gedacht. Aber bei größeren Sachen kannst du in die Funktion bewegen() alles reinschreiben, was passieren soll und beim onRelease() rufst du sämtliche Anweisungen der bewegen() mit nur einer Anweisung auf.

Probier das einfach mal aus.
 
Zuletzt bearbeitet:

Jormungand

VonAllemEtwas

AW: Buttonscript außerhalb eines Buttons?

...das ist zwar jetzt nichts Weltbewegendes...
Wenn man im Internet die Tuts anschaut, bekommt man (fast) nur noch Effekthascherei angeboten. Die wirklich nützlichen Dinge, die die tägliche Arbeit erleichtern, sucht man vergeblich.
Ich glaub, die paar "nicht weltbewegenden" Zeilen, die du geschrieben hast, bringen mich weiter, als ein Tag Internetrecherche.

Danke dafür! :)
 

TomJay66

FlashFärber

AW: Buttonscript außerhalb eines Buttons?

Kein Ursache! Hab ich gerne gemacht und jederzeit gerne. Ich bin zwar jetzt auch nicht unbedingt ein Flash-Profi, aber wenn ich helfen kann, mach ich das gerne. :)
 

h_seldon

Aktives Mitglied

AW: Buttonscript außerhalb eines Buttons?

Man kann sich auch gleich den Button sparen und alles direkt über einen mc erledigen anstatt da ein Button-Symbol reinzupacken. Denn ein MC verfügt prinzipiell über die gleiche Funktionalität wie ein Button. Bsp:

- erstelle mc (instanz mc2btn)
- Symbolbearbeitungsmodus mc: erstelle Ebene marker
- füge dort in Frame 2 und 3 ein Schlüsselbild ein
- benenne die Schlüsselbilder 1 bis 3 dieser Ebene als _up, _over und _down
- neue Ebene mit Schlüsselbildern und gewünschter Grafik
- Hauptzeitleiste:

PHP:
mc2btn.stop();
mc2btn.onRollOver = function(){
   trace("Hallo, ich bin ein mcButton");
}

Wird keine hit area definiert, gilt wie beim Button-Symbol die Grafik des mc als sensitiver Bereich. Alternativ kann man eine andere Grafik angeben:

PHP:
mc2btn.hitArea = mcHit;

mcHit ist der Instanzname eines beliebigen anderen MCs

Hi TomJay66,

wenn Du unbedingt eine derartige "globale" Funktion haben willst, dann geht der Bezug zum aktuellen Objekt auch einfacher mit einem Parameter, der an den funktionsaufruf übergeben wird, oder über eine direkte Zuweisung der Funktion zum betreffenden Ereignis. Bsp:

PHP:
function tuWas(){
   this._x += 10;
}
mc1.onPress = tuWas;

Jeder mc, dem man auf diese Weise tuWas zuordnet, wird bewegt, ohne das man explizit in einer var (oder einem Parameter) das aktivierte Objekt übergeben müsste.

PHP:
mc2.onPress = tuWas;

Bei Klick wird jetzt auch der zweite mc bewegt.

Achtung: am Ende der Zuweisung für onPress keine runde Klammern einfügen, ansonsten wird die Funktion tuWas nicht zugewisen, sondern direkt aufgerufen.
 

4uwak

WEB?ViDEO?FOTO and more

AW: Buttonscript außerhalb eines Buttons?

ja in dem bsp ist es ja auch ein MC in dem wird nur auf der obersten ebene eine unsichbare schaltfläche eingefügt die als rollover fläche diefiniert, sonst hatt sie keine verwendung, alternativ kann man noch einfach einen MC nehmen mit einer Farbfläche drin den man dann auf alpha=0 setzt, ist dann genau so eine unsichbare Fläche
 

h_seldon

Aktives Mitglied

AW: Buttonscript außerhalb eines Buttons?

u.a. das ist der Witz bei der Sache: es wird keine unsichtbare Fläche benötigt, aufgrund der frame labels sowie der zugewiesenen Mausereignisse benimmt sich der mc auch so wie ein anständiger Button.
 

4uwak

WEB?ViDEO?FOTO and more

AW: Buttonscript außerhalb eines Buttons?

ja du hast schon recht aber der hintergrund ist einfach das wenn du eine animation hast und es vorkommt das bei der animation die sachen sich verschieben und es einen leere fläche unter der maus entsteht dann kommt der rollout effect zum vorschein und das führt zu ungewollten unterbrechungen
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.640
Beiträge
1.538.506
Mitglieder
67.559
Neuestes Mitglied
mic4mac
Oben