Panorama mit DRAG UND DROP

Recht hast du.
Merci...

Och Menno. Das ist immer so fies ^^
Da freut man sich, dass man mal was Ordentliches zusammenschustert, und dann wird das alles über den Haufen geworfen :)
Aber was soll's, irgendwann lern ich's dann vielleicht sogar.

Greetz,
Killy
 
Zuletzt bearbeitet:
Hi, ich bins nomal.
@ Basti, kannse mir das mal bidde erklären.

PHP:
MovieClip.prototype.addProperty("onDoubleClick",function() {
    return this.$onDoubleClick;
    },function(f) {
    this.__proto__ = DoubleClick.prototype;
    this.$onDoubleClick = f;
    ASSetPropFlags(this,["$onDoubleClick"],1,true);
});
DoubleClick = function() {};
DoubleClick.prototype = new MovieClip();
DoubleClick.prototype.onMouseDown = function() {
    if(this.hitTest(_root._xmouse,_root._ymouse,true)) {
        (this.t = getTimer()) < this.$a+250 ? this.$onDoubleClick() : this.$a = this.t;
    }
};
ASSetPropFlags(MovieClip.prototype,["onDoubleClick"],7,true);
ASSetPropFlags(this,["DoubleClick"],7,true);

Mfg,
Killy
 
K, das mit den Flags hab ich nun einigermaßen begriffen (glaube ich).
Bleibt noch der komplette Rest des Scripts ^^
Wenn du nicht willst, lass es. Ich seh schon, ich werde mich einfach mal durch die gesamte Flash Referenz durchklicken. Eins nach dem anderen ansehen.
Vllt bin ich danach so weit, dass ich versteh, was ihr da macht...

Bye
Killy
 
Na, ich versuchs mal.

>> MovieClip.prototype.addProperty
Der Klasse MovieClip eine neue Get / Set Methode hinzufügen.
- schau am besten mal in die Hilfe nach, die haben es ganz gut erklärt

>> this.__proto__ = DoubleClick.prototype;
Mit this.__proto__ kannst du einer Klasse über ein Object eine Eigenschaft hinzufügen.

Also:
mit prototype kannst du einer Klasse etwas vererben / hinzufügen, mit __proto__ kannst du ebenfalls einer Klasse etwas hinzufügen, allerdings über das Object das von der Klasse stammt.

Beispiel:

Klasse = function() {}
Klasse.prototype.methode = function() {}

Oder aber:
Klasse = function() {}

obj = new Klasse();
obj.__proto__.methode = function() {}


>> DoubleClick = function() {};
Neue Klasse erstellen

>> DoubleClick.prototype = new MovieClip();
Die Klasse erbt das Object (mit newI) MovieClip. Erhält also die Eigenchaften eines MCs.

>> this.t = getTimer()) < this.$a+250 ? this.$onDoubleClick() : this.$a = this.t;
this.$onDoubleClick() ist eine Temp Methode, mit deren Hilfe wir den entsprechenden MC, da mit this eingeleitet (this. bezieht sich auf den MC), aufrufen können.

Unser eigentlicher Eventhandler ist also nicht onDoubleClick sondern $onDoubleClick.

Das ist übrigens auch das "schlechte" am Script, den wenn man versuch mit:
delete mc.onDoubleClick zu löschen, besteht leider weiterhin die Temp Methode und somit wird der Handler weiterhin ausgeführt. Erst mit mc.$onDoubleClick kann man den richtigen Handler löschen.
Hab leider noch nicht rausgefunden wie man das umgehen kann.

Vielleicht hat dir mein Posting ja etwas gebracht, ich kanns leider nicht besser erklären.
 

Neue Beiträge

Zurück