 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Fragen stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
16.02.2008, 14:59
|
#1
|
|
TP-Insider
Registriert seit: Nov 2002
Ort: Orscholz
|
Wie Funktion aufrufen - Sliding
Hi,
ich steh gerade aufm Schlauch, aber ich habe eine Funktion, die ich aufrufen
möchte, wenn ich einen Button klicke.
Beim Klick auf den Button soll ein anderer MC mittels TransitionManager Class
aus dem sichtbaren Bereich der Bühne verschoben werden. Die Funktion klappt
einwandrei, wenn ich ein onRelease direkt auf den MC lege, der verschwinden
soll. Allerding möchte ich diese Funktion eben nicht direkt auf dem betroffenen
MC haben, sondern eben von einem anderen aurufen.
Code:
Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;
// Tween object used to fade the button clip
var slideTween:Tween;
// Other stuff for the tween
var func:Function = Regular.easeOut;
var duration:Number = .5;
// Set button events > Slide Function
function slideLeft ():Void
{
var begin:Number = this._x;
var end:Number = -150;
slideTween = new Tween (this, "_x", func, begin, end, duration, true);
}
ausführender Button > btn1
Code:
btn1.onRelease = function() {
//setzt vari auf single, falls so, wird im v4 swf eine andere func ausgeführt
btn1.gotoAndPlay(9);
btn2.gotoAndPlay(16);
btn3.gotoAndPlay(22);
btn4.gotoAndPlay(31);
//hier sollte der Aufruf für slideLeft erfolgen, angewand auf 4 MCs
}
Wie muss ich die Func hier schreiben, damit sie ausgeführt wird?
Zum Schluss würde mich noch interessieren, wie man all die gotoAndPlays
zusammenfügen kann, weil ich ein und denselben Aufruf bei mehreren Button
habe (hier verschwinden die Buttons nämlich wieder). Dasselbe wäre ja auch
bei der slideLeft Func, weil ich die auch gleichzeitg auf 4 MCs anwenden
müsste.
Vielen Dank
Elli
__________________
Es gibt keinen Fortschritt ohne den Glauben an die Zukunft.
[JFK]
|
|
|
16.02.2008, 15:27
|
#2
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Hallo Elli,
wenn ich das jetzt richtig Verstanden habe, meinst du sowas:
PHP-Code:
import mx.transitions.Tween; import mx.transitions.easing.*; //Instanznamenznamen deiner Button und deren Playziel var btArray:Array = new Array ([btn1, 9], [btn2, 16], [btn3, 22], [btn4, 22]); //Instanznamen deiner MCs var mcArray:Array = new Array (mc_1, mc_2, mc_3, mc_4);
// Tween object used to fade the button clip var slideTween:Tween;
// Other stuff for the tween var func:Function = Regular.easeOut; var duration:Number = .5;
// Set button events > Slide Function
MovieClip.prototype.slideLeft = function ():Void { var begin:Number = this._x; var end:Number = -150; slideTween = new Tween (this, "_x", func, begin, end, duration, true); };
function bt_release () { for (var i = 0; i<btArray.length; i++) { var obj = btArray[i][0]; obj.gotoAndPlay (btArray[i][1]); } for (var i = 0; i<mcArray.length; i++) { var obj = mcArray[i]; obj.slideLeft ();
} } btn1.onRelease = function () { bt_release (); };
|
|
|
16.02.2008, 20:32
|
#3
|
|
TP-Insider
Registriert seit: Nov 2002
Ort: Orscholz
|
Hallo Wanderratte,
schon mal vielen Dank! Durch das Zusammenfassen in ein Array wird das schon
viel übersichtlicher
Jetzt habe nich noch 2 Fragen:
1.:
Code:
var obj = btArray[i][0];
obj.gotoAndPlay (btArray[i][1]);
Das [i] steht ja für die im Array gespeicherten MCs. Was aber wird mit [0],
bzw. [1] genau bewirkt?
2.:
Leider klappts mit der Slide-Func, so wie sie jetzt ist, noch nicht wirklich.
Es wird zwar geslided, aber dummerweise alles > mcArray + btArray. Es soll
ja aber nur das, was im mcArray ist, von der Bühne verschwinden. Ne Idee,
warum er alle nimmt?
__________________
Es gibt keinen Fortschritt ohne den Glauben an die Zukunft.
[JFK]
|
|
|
16.02.2008, 21:26
|
#4
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Hallo Elli,
also [btn1, 9] ist ein mehrdimensionales Array,
Wenn du zum Beispeil
trace(btArray[0]) schreibst kriegst du folgende Ausgabe btn1, 9
bei trace(btArray[0][0]) folgende btn1 und bei trace(btArray[0][1]) = 9
Bildlich gesehen, erstellst du damit ein Array im Array und es wird genaus behandelt wie ein normales Array und fängt bei 0 an.
So der erste Wert enthält den Namen des Button, der zweite Wert wohin er gehen soll.
var obj = btArray[i][0];
Ist nicht unbedingt Notwendig, aber ich mache es so aus Grunde der Übersichtlichkeit.
Du kannst alternativ auch ein Assoziatives Array nehmen, die Syntax würder wie folgt lauten:
PHP-Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;
//Instanznamenznamen deiner Button und deren Playziel
var btArray:Array = new Array ({button:btn1, goto:9, button:btn2, goto:16, button:btn3, goto:22, button:btn4, goto:22});
//Instanznamen deiner MCs
var mcArray:Array = new Array (mc_1, mc_2, mc_3, mc_4);
// Tween object used to fade the button clip
var slideTween:Tween;
// Other stuff for the tween
var func:Function = Regular.easeOut;
var duration:Number = .5;
// Set button events > Slide Function
MovieClip.prototype.slideLeft = function ():Void {
var begin:Number = this._x;
var end:Number = -150;
slideTween = new Tween (this, "_x", func, begin, end, duration, true);
};
function bt_release () {
for (var i = 0; i<btArray.length; i++) {
var obj = btArray[i].button;
obj.gotoAndPlay (btArray[i].goto);
}
for (var i = 0; i<mcArray.length; i++) {
var obj = mcArray[i];
obj.slideLeft ();
}
}
btn1.onRelease = function () {
bt_release ();
};
Kurz zu Erklärung:
Du setzt innerhalb des Arrays
var btArray:Array = new Array ({button:btn1, goto:9, button:btn2, goto:16, button:btn3, goto:22, button:btn4, goto:22});
Variablen, die du dann ausliest. Bei größeren Arrays mit mehreren Werten ist es nach meiner Meinung einfacher zu Händeln, weil man dann die Stellen nicht abzählen brauch und jede Position einen Namen hat und auch sofort weißt was drin stehen sollte. Auch kann sich die Reihenfolge ändern und du kriegst trotzdem immer den Richtigen Wert 
|
|
|
16.02.2008, 21:38
|
#5
|
|
TP-Insider
Registriert seit: Nov 2002
Ort: Orscholz
|
Fein, damit wäre Frage eins tip top beantwortet
Wenn dir jetzt noch ne Idee zu Frage 2 einfallen würde  ...
__________________
Es gibt keinen Fortschritt ohne den Glauben an die Zukunft.
[JFK]
|
|
|
16.02.2008, 21:55
|
#6
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Hänge mal die Fla hier dran, ich kann den Fehler nicht reproduzieren.
Die Function
PHP-Code:
function bt_release () {
for (var i = 0; i<btArray.length; i++) {
var obj = btArray[i].button;
obj.gotoAndPlay (btArray[i].goto);
}
for (var i = 0; i<mcArray.length; i++) {
var obj = mcArray[i];
obj.slideLeft ();
}
}
Steuert einmal das Tweening für die MCs und sollte die Button abspielen.
|
|
|
18.02.2008, 19:43
|
#7
|
|
TP-Insider
Registriert seit: Nov 2002
Ort: Orscholz
|
So, nach einem Tipp von Wanderratte, hat sich das Problem nun gelöst. Ich
hatte mich nur auf die Arrays und so konzentriert und einen wichtigen Part
außer Acht gelassen:
Code:
MovieClip.prototype.slideLeft = function ():Void {
var begin:Number = this._x;
var end:Number = -400;
slideTween = new Tween (this, "_x", func, begin, end, duration, true);
};
Aus der slideLeft Func musste ein Prototyp erstellt werden, da sonst _level0
geslidet wird, also die ganze Bühne und nicht nur die gewollten MCs.
Nochmals Dank für die Hilfe 
__________________
Es gibt keinen Fortschritt ohne den Glauben an die Zukunft.
[JFK]
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:21 Uhr.
|
 |