| |||||||
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: Feb 2006
Beiträge: 159
| function einem mc zuweisen
hi leute! habe folgendes problem und hoffe ihr könnt mir da weiter helfen. ich habe eine art rollbalken in einem mc erzeugt der keinerlei as hat. das möchte ich mit einer globalen function jeweils einzeln zuweisen. PHP-Code: PHP-Code: PHP-Code: ![]() der instanzname der beiden balken ist unterschiedlich und befinden sich auch nicht auf der gleichen instanzebene. kann mir da jemand weiterhelfen? |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
ich werde aus deinen frakmenten nicht so ganz schlau. das sind die prinzipiellen möglichkeiten: Code: // variante 1
// ein objekt erzeugen, mit einer variablen, einer integrierten funktion
// und der zuweissung einer funktion
_root.fSub = function(a) {
this.wert -= a;
return this.wert;
};
test1_obj = {wert:13};
test1_obj.fAdd = function(a) {
this.wert += a;
return this.wert;
};
test1_obj.fSub = _root.fSub;
// testen
trace(test1_obj.fAdd(5));
trace(test1_obj.fSub(8));
//
//
// variante 2
// aufruf per call bzw. per apply
_root.fGetName = function() {
return this._name;
};
_root.createEmptyMovieClip("hose", 1);
_root.createEmptyMovieClip("hemd", 2);
// testen
trace(_root.fGetName.call(_root.hose));
trace(_root.fGetName.call(_root.hemd));
//
//
// variante 3
// per prototype
MovieClip.prototype._konto = 3000;
MovieClip.prototype.fEinzahlung = function(_einzahlung) {
this._konto+=_einzahlung;
return this._konto
};
_root.createEmptyMovieClip("Sparbuch1", 1);
_root.createEmptyMovieClip("Sparbuch2", 2);
// testen
trace(Sparbuch1.fEinzahlung(30));
trace(Sparbuch2.fEinzahlung(50));
trace(Sparbuch1.fEinzahlung(100));
//
//
// variante 4
// OOPs mit class ...
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (26-02-2006 um 14:17 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Feb 2006
Beiträge: 159
|
danke für die schnelle antwort! einiges von dem habe ich bereits probiert und mit prototype kenn ich mich nicht ganz so gut aus. was funzt ist, wenn man der function ein objekt voranstellt. also: PHP-Code: PHP-Code: ) und diese dann unabhängig voneinander ihre funktionen auf dem objekt ausführen, das als erster parameter übergeben wird. klappt super.aber vielleicht kann mir jemand den unterschied zwischen den beiden varianten erklären. in der oberen (erster artikel) wird mir mit trace(objTarget) oder "this" der angesprochene mc, auf den ich z.b. gerade klicke zwar richtig angezeigt aber die aktion wird auf beiden mc's ausgeführt. |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Feb 2006
Beiträge: 159
|
JUHU! hab's nun selbst lösen können. während der bewegung des einen rollbalken ist eine variable gesetzt worden, die zeigte, dass er sich eben gerade bewegt und ist offenbar global gewesen. so "glaubte" der zweite rollbalken, dass auch er gemeint war kurz um: alle varianten funzten, nur war da eben diese tückische variable ![]() aber in dem fall zwängt sich mir eine weitere frage auf: wenn man nun z.b. die variable "slideByClick" wie folgt setzt ... PHP-Code: |
| | |
| | #5 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
dann teste doch mal meine beispiele, die sind extra ganz simpel und einfach gehalten und funktionieren ;-) ob mit oder ohne objekt, das objTarget muss raus und durch this ersetzt werden. this ist elementar wichtig! Code: _global.myObj = new Object();
_global.myObj.functRollbalken = function(outputTarget, valStart, valStep, valMax) {
this.fader.onPress = function() { [...] }
this.fader.onRelease = function() { [...] }
[...]
} nein, nie! wenn, dann umgekehrt. die funktion wird den objekten zugewissen. beispiel Code: function fTest(){trace(this);}
_root.A_mc.onEnterFrame=fTest;
_root.B_mc.onEnterFrame=fTest;
_root.C_mc.onEnterFrame=fTest; function.call(_mcA, parameter); function.call(_mcB, parameter); hier wird 'function' aufgerufen, als wenn es ein teil von _mcA bzw. _mcB wäre, wobei (wichtig!) das this in der function stellvertretend für das _mcA bzw. _mcB ist. MovieClip.prototype.xxxxx wenn ein MovieClip erzeugt wird, dann erhält es diese eigenschaften mit. kann man dann benützen, wie alle anderen eigenschaften eines mc's: _x, _y, _rotation, usw. deine fragmente sind (sorry) irgendwie käse, da passt nichts zusammen. schau dir das nochmals an, vielleicht fällt ja dann der cent? Code: // rollbalkenX_mc
// +-- schatten_mc
// +-- fader_mc
//
var rollbalken_array = [_root.rollbalken1_mc, _root.rollbalken2_mc];
//
// allen rollbalken das selbe programm zuweissen:
for (var i in rollbalken_array) {
var r = rollbalken_array[i];
r.fader_mc.onPress = function() {
this._alpha++;
};
r.fader_mc.onRelease = fader_mc.onReleaseOutside=function () {
this._alpha--;
};
r.schatten_mc.onEnterFrame = function() {
// this ist hier schatten_mc
// und this._parent ist das r
// r == _root.rollbalken1_mc oder _root.rollbalken2_mc
this._x = this._parent._x+5;
this._y = this._parent._y+7;
};
r.fNurAlsBeispiel = function(_wert) {
// hier ist this das r. einfach trace'n. dann siehst du ja wer was ist.
trace(this);
this._x += _wert;
};
}
//
rollbalken1_mc.fNurAlsBeispiel(33);
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (26-02-2006 um 18:22 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |