| |||||||
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: Jun 2001 Ort: south/west Germany :-)
Beiträge: 100
|
Hallo Ihr, habe einen Button, der bei <click> einen Movie per attachMovieClip() und startDrag() an die Maus hängt: Code: on(press)
{
_root.numberOfMovies = _root.numberOfMovies+1;
i = _root.numberOfMovies;
_root.attachMovie("mc_piece", "mcPiece" + i, i);
path = eval("_root.mcPiece" + i);
path._x = _root.mcGetANewPiece._x;
path._y = _root.mcGetANewPiece._y;
path.startDrag();
} Code: on(release)
{
path.stopDrag();
} Code: on(press)
{
_parent.startDrag();
}
on(release)
{
_parent.stopDrag();
} Ich habe das ganze mal als fla angehängt, falls das hilft... Geändert von olliX (06-04-2006 um 10:04 Uhr) |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
das kommt mit deinem 2. drag in mc_piece in konflikt. deine programme löschen und das da in die hauptzeitleiste: Code: var numberOfMovies = 0;
//
mcGetANewPiece.onPress = function() {
i = ++_root.numberOfMovies;
path = _root.attachMovie("mc_piece", "mcPiece"+i, i);
path._x = this._x;
path._y = this._y;
path.startDrag();
this.onRelease = this.onReleaseOutside=function () {
path.stopDrag();
path.onPress = startDrag;
path.onRelease = path.onReleaseOutside=stopDrag;
};
};
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: south/west Germany :-)
Beiträge: 100
|
DANKE :-) Es funktioniert jetzt... Habe das alte Script zwar auf dem zu "dragenden" Movie lassen müssen, weil sonst nur noch der zuletzt hinzugefügte Movie verschiebbar war, aber das ist ja kein Problem, eben: es funzt! |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: south/west Germany :-)
Beiträge: 100
|
Na ja... Jetzt klemmt es nur wo anders. Hing ein MC bisher an der Maus, ließ er sich mit den Pfeiltasten drehen. Das Script im _root: Code: checkTheKeys = new Object();
checkTheKeys.onKeyDown = function ()
{
if(_root.activeItem !== false)
{
if(Key.isDown(Key.RIGHT))
{
_root.activeItem.angle = _root.activeItem.angle+5;
_root.activeItem._rotation = _root.activeItem.angle;
}
else if(Key.isDown(Key.LEFT))
{
_root.activeItem.angle = _root.activeItem.angle-5;
_root.activeItem._rotation = _root.activeItem.angle;
}
}
}
Key.addListener(checkTheKeys); Code: this.onRelease = this.onReleaseOutside = function () Hat jemand eine schnelle Idee, wie man das in den Griff bekommen könnte? |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: south/west Germany :-)
Beiträge: 100
|
Sicher. Es sind keine anderen Scripte unterwegs, die sich da beissen könnten - bzw. ich habe es ganz konkret abgeprüft, bei gleichzeitig gedrückter Maustaste und dem Drücken einer Taste auf der Tastatur meldet sich ein trace() aus dem onRelease-Handler.
|
| | |
| | #7 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
wo und wann entscheidest du, wer _root.activeItem ist? "..Sobald ich aber nun eine Taste auf der Tastatur drücke, spricht die this.onRelease = this.onReleaseOutside = function () Funktion drauf an und löst logischerweise.." das ist überhaupt nicht logisch, weil diese events von der maus und nicht von key's ausgelöst werden. wenn, dann hasst du irgend wo anderst einen kuttelmuddel eingebaut.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: south/west Germany :-)
Beiträge: 100
|
OK, "logischerweise" ist natürlich Quatsch, sonst hätte ich meine Probleme hier nicht. Es werden jeweils Funktionen aufgerufen, z.B. die getNewItem(), welche dann _root.activeItem setzt (siehe unten). Genauso wird beim Release eine Funktion drop() aufgerufen, die _root.activeItem wieder auf false setzt. Diese Funktionen spielen aber eigentlich keine Rolle. Das an-die-Maus-hängen funktioniert, sobald die Pfeiltaste gedrückt wird, erhalte ich bereits das Tracing ("HALLO!!! Beim drücken der Pfeiltaste ausgelöst!"). Code: _root.mcBtn.onPress = function()
{
code = "item";
path = _root.getNewItem(code, this);
this.onRelease = this.onReleaseOutside = function ()
{
trace("HALLO!!! Beim drücken der Pfeiltaste ausgelöst!");
_root.drop(path);
};
};
function getNewItem(code, path2Btn)
{
k = 1000 + _root.arrItems["x"].length;
_root.attachMovie("mc_" + code, "mc" + code+ "-" + k, 1000 + k);
path = eval("_root.mc" + code + "-" + k);
_root.activeItem = path;
path._x = path2Btn._x;
path._y = path2Btn._y;
path.startDrag();
} |
| | |
| | #10 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
"..Das an-die-Maus-hängen funktioniert.." wenn alles funktioniert, dann ist es ja gut ;-) leider besagt das nur, das - onReleaseOutside - irgerndwo die maustaste losgelassen wurde. lade doch bitte deine fla hoch und nicht irgendwelche programmschnipsel. wenn dein fehler daran liegen würde, dann hättest du ihn vermutlich selbst gefunden. folglich liegt er wo anderst. Edit: ok, du warst schneller ;-)
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #11 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
| Code: var numberOfMovies = 0;
var activeItem = null;
//
mcGetANewPiece.onPress = function() {
i = ++_root.numberOfMovies;
path = _root.attachMovie("mc_piece", "mcPiece"+i, i);
path._x = this._x;
path._y = this._y;
path.onPress = function() {
this.startDrag();
activeItem = this;
};
path.onRelease = path.onReleaseOutside=function () {
stopDrag();
activeItem = null;
};
path.onPress();
this.onRelease = this.onReleaseOutside=path.onRelease;
};
//
checkTheKeys = {};
checkTheKeys.onKeyDown = function() {
if (activeItem) {
if (Key.isDown(Key.RIGHT)) {
activeItem._rotation += 5;
} else if (Key.isDown(Key.LEFT)) {
activeItem._rotation -= 5;
}
}
};
Key.addListener(checkTheKeys);
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: south/west Germany :-)
Beiträge: 100
|
Ja... sorry... ich hatte da zu spät dran gedacht, dass das fla natürlich viel hilft. Bin aber immerhin selbst drauf gekommen. ;-) Anyway, habe den Code wie von Dir gepostet mal eingebaut - bei mir funzt es aber leider nicht. Nach dem ersten Tastendruck "löst" der onRelease-Handler aus, auch wenn der an der Maus hängende Clip hängen bleibt, sprich die stopDrag()-Funktion nicht wirkt. Auch seltsam. Das aktuelle fla mit dem Code hängt noch mal dran. Flash-Bug? - nur ein Event-Handler zur Zeit? Sprich Maus ODER Tastatur? :-( |
| | |
| | #13 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
ditto sorry, habe dein letztes fla geladen: - man kann kopien ziehen, es löst beim loslassen - einen fläche anklicken und bei gedrückter maustaste via tastatur drehen bei mir geht alles (auch mit flash7 getestet).
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Jun 2001 Ort: south/west Germany :-)
Beiträge: 100
|
Habe es jetzt gerade selbst mal ausserhalb von Flash gestartet > also wohl mit aktuellerem Player, und siehe da, ES GEHT. Im Flash streikt es allerdings weiterhin. Aber gut, nicht wichtig. Dir auf jeden Fall vielen vielen Dank für die Hilfe... :-) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |