| |||||||
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: May 2004
Beiträge: 25
| Linien bewegen
Hallo miteinander. Gleich zu Beginn: Ich bin absoluter Flash Anfänger - also jeder Tip ist mehr als willkommen ![]() Ich habe folgendes Problem: Es geht darum dass auf einem Feld (600x400px) etwa 10 dünne und 1 dicke Linie dargestellt werden soll. Wenn man dorthin klickt, wo die dicke Linie ist, so sollen die restlichen Linien nach rechts wandern (und am rechten Rand verschwinden). In einem anderen forum hat mir bereits eine sehr freundliche Person geholfen und daher habe ich jetzt folgendes: Code: MovieClip.prototype.bewegen = function(speed, xMin, xMax) {
trace(speed);
this.onEnterFrame = function() {
if (this._x>=xMax) {
delete this.onEnterFrame;
// speed = 0 is nich so doll, da die funktion
//sonst ständig weiter aufgerufen wird
} else {
if (this._x<=xMin) {
delete this.onEnterFrame;
}
}
this._x += speed;
};
};
createThinLine = function (x1, y1, x2, y2, thickness, id) {
_root.createEmptyMovieClip("line"+id, id);
with (_root["line"+id]) {
lineStyle(thickness, 0x000000, /*Math.random()*100*/100);
moveTo(x1, y1);
lineTo(x2, y2);
_x = x1;
_y = y1;
}
};
createThickLine = function (x1, y1, x2, y2, thickness, id) {
_root.createEmptyMovieClip("Tline"+id, id);
with (_root["Tline"+id]) {
lineStyle(thickness, 0x000000, 100);
moveTo(x1, y1);
lineTo(x2, y2);
_x = x1;
_y = y1;
}
};
drawFineLines = function () {
for (i=0; i<10; i++) {
xKoord = Math.floor(Math.random()*600);
trace("i: " + xKoord);
createThinLine(xKoord, 0, xKoord, 400, 3, i);
}
};
drawThickLines = function () {
createThickLine(200, 0, 200, 400, 10, 1);
};
drawFineLines();
drawThickLines();
onMouseDown = function () {
if ((_xmouse>195) && (_xmouse<205)) {
for (i=0; i<11; i++) {
// trace(_root["line"+i]._x);
_root["line"+i].bewegen(5, 0, 600);
}
}
};
createThinLine(1,10,1,300,1,100);
createThinLine(0,0,600,400,1,300);
stop(); 1.) es werden nicht alle Linien angezeigt (warum?) 2.) die dicke Linie sollte eigentlich bei einem x-wert von 200 sein, sie ist aber bei etwa 400. Wenn man auf sie klickt, passiert nichts, klickt man aber dorthin wo sie eigentlich sein sollte (bei 200px vom linken Rand aus) so funktioniert das Bewegen. Könnt ihr mir hier evtl. weiterhelfen und mir vielleicht einen Hinweis geben, wo der Fehler liegt ? |
| | |
| | #2 (permalink) |
| Gib her, ich mach das! Registriert seit: Jul 2003 Ort: Karlsruhe/Kassel
Beiträge: 270
|
Deine Linien kommen sich beim erstellen mit der Tiefenverwalten in die Quere. Du solltest als erstes, also noch vor dem MovieClip.protoype das hier einfügen: var depth=0; Und dann in den Funktionen drawFineLines und DrawThickLines jeweils den letzten Parameter der in der for-Schleife aufgerufenen Funktion (also i buw. 1) durch depth++ ersetzen. Vielleicht klärt sich dann auch dein zweites Problem. |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: May 2004
Beiträge: 25
|
hmm .. hat irgendwie nicht ganz geholfen .. Immer noch dieselben Probleme ![]() hier der aktualisiertere Code Code: var depth=0;
MovieClip.prototype.bewegen = function(speed, xMin, xMax) {
trace(speed);
this.onEnterFrame = function() {
if (this._x>=xMax) {
delete this.onEnterFrame;
// speed = 0 is nich so doll, da die funktion
//sonst ständig weiter aufgerufen wird
} else {
if (this._x<=xMin) {
delete this.onEnterFrame;
}
}
this._x += speed;
};
};
createThinLine = function (x1, y1, x2, y2, thickness, id) {
_root.createEmptyMovieClip("line"+id, id);
with (_root["line"+id]) {
lineStyle(thickness, 0x000000, /*Math.random()*100*/100);
moveTo(x1, y1);
lineTo(x2, y2);
_x = x1;
_y = y1;
}
};
createThickLine = function (x1, y1, x2, y2, thickness, id) {
_root.createEmptyMovieClip("Tline"+id, id);
with (_root["Tline"+id]) {
lineStyle(thickness, 0x000000, 100);
moveTo(x1, y1);
lineTo(x2, y2);
_x = x1;
_y = y1;
}
};
drawFineLines = function () {
for (i=0; i<10; i++) {
xKoord = Math.floor(Math.random()*600);
trace("i: " + xKoord);
createThinLine(xKoord, 0, xKoord, 400, 3, depth++);
}
};
drawThickLines = function () {
createThickLine(200, 0, 200, 400, 10, depth++);
};
drawFineLines();
drawThickLines();
onMouseDown = function () {
if ((_xmouse>195) && (_xmouse<205)) {
for (i=0; i<11; i++) {
// trace(_root["line"+i]._x);
_root["line"+i].bewegen(5, 0, 600);
}
}
};
createThinLine(1,10,1,300,1,100);
createThinLine(0,0,600,400,1,300);
stop(); |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: May 2004
Beiträge: 25
|
wen's interessiert. Die Lösung ist eigentlich recht einfach. Ich erstelle eine movieclip und zeichne in dieses an das Koordinaten - Paar (200,0) eine Linie .. Nun verschiebe dich das Ganze (_x=x1) nach rechts um 200 px natürlich ist nun alles nach rechts verschoben. ![]() Wenn ich die Linie an die Stelle 0/0 des Movieclips zeichne und danach den Movieclip verschiebe kann ich sowohl die Position der Linie richtig auslesen als dass sie auch an der richtigen Stelle ist |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |