Matthias Kannengiesser
Erfahrenes Mitglied
Vom Prototype zur Klasse und den diversen Lösungsansätzen.
ActionScript 1.0
Hier haben wir den Wabber-Prototype, welcher direkt im Flash Film untergebracht wird. Es wird ein MovieClip-Symbol mit dem Verknüpfungsbezeichner Clip und zwei MovieClip-Instanzen mc und mc2 benötigt.
----
ActionScript 2.0
Hier haben wir drei ActionScript 2.0 Lösungsansätze (Simple, Register, Comp).
Simple-Version Wabber.as - Skript
Diese Version gehört zur Standard-Lösung. Die Klasse Wabber wird hierbei von der MovieClip-Klasse abgeleitet.
Flash Film Simple-Version - Skript
Flash Film (es wird lediglich ein Movieclip-Symbol mit dem Verknüpfungsbezeichner Clip vorausgesetzt) - die Verknüpfung zur Klasse muss ebenfalls zugewiesen werden.
Dyn-Version Wabber.as - Skript
Wie man sieht wird die Klasse Wabber von der Klasse MovieClip abgeleitet!
Flash Film Dyn-Version - Skript
Flash Film (es wird lediglich ein Movieclip-Symbol mit dem Verknüpfungsbezeichner Clip vorausgesetzt) - die Verknüpfung zur Klasse übernimmt Object.registerClass()
Comp-Version Wabber.as - Skript
Eine Ableitung von der Klasse MovieClip ist in diesem Fall nicht notwendig.
Flash Film Comp-Version - Skript
Flash Film (es wird lediglich ein Movieclip-Symbol mit dem Verknüpfungsbezeichner Clip vorausgesetzt) - die Verknüpfung zum MovieClip übernimmt die Klasse selbst.
Hinweis
Im Anhang wabber_klassen_2005.zip sind sämtliche vier Versionen enthalten pickt euch euren Favoriten heraus (Prototype, Simple, Register, Comp). So lernt man auch gleich vier unterschiedliche Lösungsansätze kennen.
Be inspired!
Liebe Grüsse
Matze K.
ActionScript 1.0
Hier haben wir den Wabber-Prototype, welcher direkt im Flash Film untergebracht wird. Es wird ein MovieClip-Symbol mit dem Verknüpfungsbezeichner Clip und zwei MovieClip-Instanzen mc und mc2 benötigt.
PHP:
MovieClip.prototype.wabber = function(multiplikator, xskal, yskal, ratio) {
if (this.sX == undefined) this.sX = 0;
if (this.sY == undefined) this.sY = 0;
this.onEnterFrame = function() {
this.sX = Number(this.sX*multiplikator)+Number((xskal-this._xscale)*ratio);
this.sY = Number(this.sY*multiplikator)+Number((yskal-this._yscale)*ratio);
this._xscale += Math.round(this.sX);
this._yscale += Math.round(this.sY);
};
};
MovieClip.prototype.wabberKill = function(multiplikator, xskal, yskal, ratio) {
if (this.sX == undefined) this.sX = 0;
if (this.sY == undefined) this.sY = 0;
this.onEnterFrame = function() {
if (this._xscale != xskal || this._yscale != yskal) {
this.sX = Number(this.sX*multiplikator)+Number((xskal-this._xscale)*ratio);
this.sY = Number(this.sY*multiplikator)+Number((yskal-this._yscale)*ratio);
this._xscale += Math.round(this.sX);
this._yscale += Math.round(this.sY);
} else {
delete this.onEnterFrame;
}
};
};
// Clip Wabber
mc.wabber(.9, 150, 150, .3);
mc.onRollOver = function() {
this.wabber(.9, 150, 150, .3);
};
mc.onRollOut = function() {
this.wabber(.9, 100, 100, .3);
};
// Clip WabberKill
mc_2.wabberKill(.9, 150, 150, .3);
mc_2.onRollOver = function() {
this.wabberKill(.9, 150, 150, .3);
};
mc_2.onRollOut = function() {
this.wabberKill(.9, 100, 100, .3);
};
----
ActionScript 2.0
Hier haben wir drei ActionScript 2.0 Lösungsansätze (Simple, Register, Comp).
Simple-Version Wabber.as - Skript
Diese Version gehört zur Standard-Lösung. Die Klasse Wabber wird hierbei von der MovieClip-Klasse abgeleitet.
PHP:
class Wabber extends MovieClip {
// Prop
private var sX:Number;
private var sY:Number;
// Constructor
function Wabber() {}
// Effekt wabbern
public function wabbern(multiplikator:Number, xskal:Number, yskal:Number, ratio:Number):Void {
if (sX == undefined) sX = 0;
if (sY == undefined) sY = 0;
onEnterFrame = function() {
sX = Number(sX*multiplikator)+Number((xskal-_xscale)*ratio);
sY = Number(sY*multiplikator)+Number((yskal-_yscale)*ratio);
_xscale += Math.round(sX);
_yscale += Math.round(sY);
};
}
// Effekt wabbern_kill
public function wabbern_kill(multiplikator:Number, xskal:Number, yskal:Number, ratio:Number):Void {
if (sX == undefined) sX = 0;
if (sY == undefined) sY = 0;
onEnterFrame = function() {
if (_xscale != xskal || _yscale != yskal) {
sX = Number(sX*multiplikator)+Number((xskal-_xscale)*ratio);
sY = Number(sY*multiplikator)+Number((yskal-_yscale)*ratio);
_xscale += Math.round(sX);
_yscale += Math.round(sY);
} else {
delete onEnterFrame;
}
};
}
}
Flash Film Simple-Version - Skript
Flash Film (es wird lediglich ein Movieclip-Symbol mit dem Verknüpfungsbezeichner Clip vorausgesetzt) - die Verknüpfung zur Klasse muss ebenfalls zugewiesen werden.
PHP:
// Clip wabber
mc.wabbern(.9, 150, 150, .3);
mc.onRollOver = function()
{
this.wabbern(.9, 150, 150, .3);
}
mc.onRollOut = function()
{
this.wabbern(.9, 100, 100, .3);
}
// Clip wabbern_kill
mc_2.wabbern_kill(.9, 150, 150, .3);
mc_2.onRollOver = function()
{
this.wabbern_kill(.9, 150, 150, .3);
}
mc_2.onRollOut = function()
{
this.wabbern_kill(.9, 100, 100, .3);
}
Dyn-Version Wabber.as - Skript
Wie man sieht wird die Klasse Wabber von der Klasse MovieClip abgeleitet!
PHP:
class Wabber extends MovieClip {
// Prop
private var sX:Number;
private var sY:Number;
// Constructor
public function Wabber() {}
// Effekt wabbern
public function wabbern(multiplikator:Number, xskal:Number, yskal:Number, ratio:Number):Void {
if (sX == undefined) sX = 0;
if (sY == undefined) sY = 0;
onEnterFrame = function() {
sX = Number(sX*multiplikator)+Number((xskal-_xscale)*ratio);
sY = Number(sY*multiplikator)+Number((yskal-_yscale)*ratio);
_xscale += Math.round(sX);
_yscale += Math.round(sY);
};
}
// Effekt wabbern_kill
public function wabbern_kill(multiplikator:Number, xskal:Number, yskal:Number, ratio:Number):Void {
if (sX == undefined) sX = 0;
if (sY == undefined) sY = 0;
onEnterFrame = function() {
if (_xscale != xskal || _yscale != yskal) {
sX = Number(sX*multiplikator)+Number((xskal-_xscale)*ratio);
sY = Number(sY*multiplikator)+Number((yskal-_yscale)*ratio);
_xscale += Math.round(sX);
_yscale += Math.round(sY);
} else {
delete onEnterFrame;
}
};
}
}
Flash Film Dyn-Version - Skript
Flash Film (es wird lediglich ein Movieclip-Symbol mit dem Verknüpfungsbezeichner Clip vorausgesetzt) - die Verknüpfung zur Klasse übernimmt Object.registerClass()
PHP:
// Symbol Clip und Wabber-Klasse
Object.registerClass("Clip", Wabber);
// MC
this.attachMovie ("Clip", "mc", 1, {_x:160, _y:200});
mc.wabbern(.9, 150, 150, .3);
mc.onRollOver = function()
{
this.wabbern(.9, 150, 150, .3);
}
mc.onRollOut = function()
{
this.wabbern(.9, 100, 100, .3);
}
// MC2
this.attachMovie ("Clip", "mc2", 2, {_x:410, _y:200});
mc2.wabbern_kill(.9, 150, 150, .3);
mc2.onRollOver = function()
{
this.wabbern_kill(.9, 150, 150, .3);
}
mc2.onRollOut = function()
{
this.wabbern_kill(.9, 100, 100, .3);
}
Comp-Version Wabber.as - Skript
Eine Ableitung von der Klasse MovieClip ist in diesem Fall nicht notwendig.
PHP:
class Wabber {
// Prop
private var ziel:MovieClip;
// Constructor
public function Wabber(ziel:MovieClip)
{
this.ziel = ziel;
}
// Effekt wabbern
public function wabbern(multiplikator:Number, xskal:Number, yskal:Number, ratio:Number):Void {
if (ziel.sX == undefined) ziel.sX = 0;
if (ziel.sY == undefined) ziel.sY = 0;
ziel.onEnterFrame = function() {
this.sX = Number(this.sX*multiplikator)+Number((xskal-this._xscale)*ratio);
this.sY = Number(this.sY*multiplikator)+Number((yskal-this._yscale)*ratio);
this._xscale += Math.round(this.sX);
this._yscale += Math.round(this.sY);
};
}
// Effekt wabbern_kill
public function wabbern_kill(multiplikator:Number, xskal:Number, yskal:Number, ratio:Number):Void {
if (ziel.sX == undefined) ziel.sX = 0;
if (ziel.sY == undefined) ziel.sY = 0;
ziel.onEnterFrame = function() {
if (this._xscale != xskal || this._yscale != yskal) {
this.sX = Number(this.sX*multiplikator)+Number((xskal-this._xscale)*ratio);
this.sY = Number(this.sY*multiplikator)+Number((yskal-this._yscale)*ratio);
this._xscale += Math.round(this.sX);
this._yscale += Math.round(this.sY);
} else {
delete this.onEnterFrame;
}
};
}
}
Flash Film Comp-Version - Skript
Flash Film (es wird lediglich ein Movieclip-Symbol mit dem Verknüpfungsbezeichner Clip vorausgesetzt) - die Verknüpfung zum MovieClip übernimmt die Klasse selbst.
PHP:
// Clip Objekt
var clip:Wabber = new Wabber(this.mc);
clip.wabbern(.9, 150, 150, .3);
mc.onRollOver = function()
{
clip.wabbern(.9, 150, 150, .3);
}
mc.onRollOut = function()
{
clip.wabbern(.9, 100, 100, .3);
}
// Clip2 Objekt
var clip2:Wabber = new Wabber(this.mc2);
clip2.wabbern_kill(.9, 150, 150, .3);
mc2.onRollOver = function()
{
clip2.wabbern_kill(.9, 150, 150, .3);
}
mc2.onRollOut = function()
{
clip2.wabbern_kill(.9, 100, 100, .3);
}
Hinweis
Im Anhang wabber_klassen_2005.zip sind sämtliche vier Versionen enthalten pickt euch euren Favoriten heraus (Prototype, Simple, Register, Comp). So lernt man auch gleich vier unterschiedliche Lösungsansätze kennen.
Be inspired!
Liebe Grüsse
Matze K.