| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Dec 2004 Ort: karlsruh
Beiträge: 13
| function aufruf
Jaja ich weiß, ich bin ganz neu und schon kommt eine Frage... hab mich aber schon im Forum umgeschaut, nix gefunden und jetzt dreist zu folgendem Script, dass komplett in der Zeitleiste liegen soll, die Frage: Wie weise ich dem "mc" die function zu, ohne auf das .onRelease zurück greifen zu müssen? Code: function knopfScript(objekt, releaseFrame, rollOverFrame, aktion) {
objekt.onRelease.gotoAndPlay(releaseFrame);
objekt.onRollOver.gotoAndPlay(rollOverFrame);
objekt._alpha = aktion;
}
mc.onRelease = function() {
knopfScript(mc, 5, 10, 50);
}; Natürlich könnte man auch für ein und den selben mc mehrere Funktionen definieren (onRelease, onRollOver, onUndSOWeiter...) aber ich will es elegant haben, sonst würde ich ja nicht Flash programmieren (versuchen). Ich hoffe das Problem wird deutlich. Vielen Dank für die Hilfe Tim |
| | |
| | #2 (permalink) |
| *warg* Registriert seit: May 2002 Ort: Berlin
Beiträge: 261
|
hi, nach reiflichen überlegungen bin ich zu folgenden punkten gekommen: 1.) das Forum ist dazu da, damit du fragen stellen kannst :-) 2.) Ich habe schon lange nicht mehr geflasht .. *fluch* .oO(wieso treib ich mich schon wieder hier rum) 3.) .. du solltest dein "knopfscript" als funktion für deine MCs einführen. das heißt OOP und ist immer einer äußerst elegante Lösung! :-) hier mal ein wenig code . als kleines schema . der code ist aber in flash MX und nicht MX2004 entstanden und ich hab mich seitdem nicht mehr mit AS beschäftigt und glaube, gerade im OOP bereich hat sich doch flash mit mx2004 stark weiterentwickelt (oder?).. also, wer n besseren vorschlag hat oder mal "optimieren" mag, immer zu ! ActionScript:
kann auch absoluter mist gewesen sein, was ich hier geschrieben habe, falls ja, haut mich einer bitte. *überleg* .. du könntest natürlich die function gleich als eine function für alle movieClips definieren .. ähmm . habs aber nie getan, weiß nicht, wie man es ganz korrekt macht .oO( MovieClip.prototype.knopfscript=function() { ... } - ?? ) aber ob das alles wirklich elegant ist .... *schaut* .. naja, weiß nicht, wie man es sonst eleganter machen sollte ich frage mich nur .. wozu ein solches script? schönen Gruß _Tuffy Edit: *sich das anschau .. .. überleg .. überleg .. anschau .. deine frage anschaut* .. *achselzuck* .. vll. hast du aber eher sowas gesucht: ActionScript:
naja .. ..inzwischen bin ich mir auch nicht so ganz sicher, wo es dich juckt .. eins von beiden wird sicherlich deine Lösung sein (oder dich deiner Lösung näherbringen *ggg* ) Gruß Tuffy
__________________ "nimm dir das leben - es gehört dir!" "die realität versucht mich einzuholen - doch ich bin schneller !" Geändert von Tuffyfant (30-12-2004 um 03:10 Uhr) |
| | |
| | #3 (permalink) |
| querdenker Registriert seit: Jun 2001 Ort: formel1-stadt hockenheim
Beiträge: 4.731
|
wie geil tuffy...das liest sich wie´n roman...hähä.. ![]() aber davon ab...wenn ich schon dinge sehe wie: mc.onRollOver.gotoAndPlay sag mal...wo findet man so was geschrieben? syntaktisch ist das ein erschiessungskommando..*räusper* was haben wir über onEvents gelernt? sie müssen erst mal initialisiert werden, bevor wir wild mit ihnen hantieren dürfen - und das geschieht über: ActionScript:
also machen wir mal folgendes: ActionScript:
so würde das auch gehen, selbst mit einem onRelease. wäre ja noch schöner, wenn man pro object nur einen event feuern könnte...*gg* greetz kelor |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Dec 2004 Ort: karlsruh
Beiträge: 13
|
So, Hallo, Mensch das ging ja wahnsinnig schnell und dann auch noch so gut! @Tuffy: liest sich, da stimme ich kelor zu, sehr gut was du schreibst, man hört fast wie du denkst und wie es dir freude mach zu scripten, auch sehr sinnvoll einfach den alphawert mal auf 100 zu setzten, als hätten wir sonst keine Sorgen... Die zweite Lsg die du vorgeschlagen hast war genau das was ich suchte, funzt aber seltsamer_weise nicht... Das erste war auch sehr nett anzuschauen aber... naja, ich bin ja nicht blöd, aber leider noch nicht so weit das ich das alles geblickt habe, also raff das schon aber... naja, elegant aber: simpel... das hätte ich vielleicht dazu sagen sollen... @kelor: hab dann einfach dein script genommen und es etwas modifiziert, sieht jetzt so aus: Code: function knopfScript(objekt, releaseFrame, rollOverFrame, rollOutFrame) {
objekt.relFrame = releaseFrame;
objekt.rollOverFrame = rollOverFrame;
objekt.rollOutFrame = rollOutFrame;
objekt.onRelease = function() {
this.gotoAndStop(this.relFrame);
trace("onRelease");
};
objekt.onRollOver = function() {
this.gotoAndStop(this.rollOverFrame);
trace("rollOverFrame");
};
objekt.onRollOut = function() {
this.gotoAndStop(this.rollOutFrame);
trace("onRollOut");
};
}
mc.onRollOver = function() {
trace("main:move");
knopfScript(mc, 5, 10, 1);
}; beim ersten onRollOver , den man im film auf dem mc macht, macht er zwar den trace aber die funktion wird wohl noch nicht angesprochen, also den trace aus der Funktion macht er beim ersten rollOver nicht. so weit so dumm von mir, vielleicht wisst ihr ja noch was und wie gesagt: das mit dem onLoad klappt net (wäre ja auch zu einfach gewesen) grüsse Tim (24) |
| | |
| | #5 (permalink) |
| querdenker Registriert seit: Jun 2001 Ort: formel1-stadt hockenheim
Beiträge: 4.731
|
ja den trace aus dem zweiten onRollover innerhalb der funktion kann er ja auch erst beim zweiten mal feuern. der wird ja erst NACH dem ersten mal erstellt. außerdem wäre die übergabe innerhalb des onRollOver-events mit 'this' anstelle von 'mc' richtig. stichwort: scoping! und du willst, dass beide gefeuert werden? oder wie? greetz kelor |
| | |
| | #6 (permalink) | |
| *warg* Registriert seit: May 2002 Ort: Berlin
Beiträge: 261
| Zitat:
ein paar weitere Gedanken: achja.. zwischen Simpel und elegant ist ungewollt meist ein himmelweiter unterschied.... ich glaube z.B. dass objekt.onRelease.gotoAndPlay() zwar ne syntaktische vergewaltigung darstellen mag, aber simpler gehts eigentlich nicht zu schreiben oder ? .. zumindest, wenn man ledeglich eine Aktion ausführen will. dass er dein trace nicht ausgibt ist doch eigentlich ganz klar. wenn ich mir deinen Code so anschaue und mir einen Debugger vorstelle, denke ich folgendes: das onRollOver wird ausgelößt: ActionScript:
erst nach dem ersten onRollOver wird das verhalten : ActionScript:
so das er beim zweiten onRollOver gleich zum knopfscript springt. wenn du willst, dass sofort dein trace ausgegeben wird, musst du dein knopfscript noch vor dem ersten onRollover laden. das kannst du dann wie erwähnt mit ActionScript:
oder du machst eine elegante klasse (*gg*) wie in meinem ersten beispiel und schreibst ledeglich ActionScript:
trace("main:move"); nur ein erstes mal ausgegeben wird, während auch noch ActionScript:
trace("main:move"); schon mal aufgerufen worden ist..... so, dass reicht erstmal an kreativen ergüssen meinerseits heute *g* schönen Gruiß und frohes Neues wünscht euch _Tuffy
__________________ "nimm dir das leben - es gehört dir!" "die realität versucht mich einzuholen - doch ich bin schneller !" | |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Dec 2004 Ort: karlsruh
Beiträge: 13
|
Tuffy, du hast ja so recht es müsst eklappen, aber es klappt nicht, ich bin am ende, am boden zerstört, mein kopf raucht und ich komme um vor leid.... nun ja, also eigentlich gehts mir gut nur ich versteh es halt nicht Code: mc.onLoad= function() {
trace("main:move");
knopfScript(mc, 5, 10, 1);
}; Code: mc.onEnterFrame = function() {
trace("main:move");
knopfScript(mc, 5, 10, 1);
}; Ich versteh aber überhaupt gar nicht und ich sehe es auch nicht ein, dass das onLoad nicht funzt.... ratlos und geflasht.... ach, Code: _root.onLoad = function() {
trace("main:move");
}; gruss Tim |
| | |
| | #8 (permalink) |
| querdenker Registriert seit: Jun 2001 Ort: formel1-stadt hockenheim
Beiträge: 4.731
|
onLoad funktioniert NUR und ausschließlich mit objekten, die geladen werden... (dazu zählt auch _root(_level0))... also einen mc, den du da hast wird das onLoad wenig jucken... aber warum auch in den onLoad rein? schreib´s dioch einfach auf die zeitleiste ohne handler... also simpel in die erste zeile... ActionScript:
wozu muss da n eventhandler herhalten? greetz kelor |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Dec 2004 Ort: karlsruh
Beiträge: 13
|
Jajaja, du hast völlig recht, hab ich dann auch grade festgestellt, leider leider bleibt es wahr: es gibt dumme Fragen und manchmal gibt es auch in meinem Kopf zu wenige Gedanken. Hatte mich grad schon auf sowas eingeschossen: Code: _root.onLoad = function() {
trace("something");
knopfScript(mc, 5, 10, 1);
knopfScript(mcc, 5, 10, 1);
}; Vielen Dank auf jeden Fall Tim |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |