| |||||||
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) |
| scriptvermurkser Registriert seit: Apr 2003
Beiträge: 269
| Koordinaten eines Obj bestimmen?
Moin! Ich bins mal wieder. Eigentlich hab ich immer noch das gleiche Problem (seit Tagen, in verschiedenen Varianten). Im Grund möchte ich, das ein Objekt die gleiche Postion wie ein anderes bekommt. Habe folgendes script: this.onEnterFrame = function() { script.ball.attachMovie("test", "produkt", 1); if (script.ball.produkt.hitTest(_root.koll)){ script.stop(); localToGlobal(script.ball.produkt); script.ball.produkt._x = 10; script.ball.produkt._y = 10; //script.ball.produkt._x = wagen._x; //script.ball.produkt._y = wagen._y; delete this.onEnterFrame; } } Was ich damit erreichen wollte: ich erstelle "test" mit dem Instanznamen "produkt" in script.ball; wenn produkt mit koll kollidiert stoppt der film script (tut er auch); dann wollte ich die lokalen Koordinaten von produkt in globale umwandeln und die sollten gleichgesetzt werden mit denen von "wagen", weil das nicht funktioniert hat, hab ich es erst mal damit versucht, ihnen feste Werte zu zuweisen. funzt aber auch nicht. Warum nicht Kann mir einer helfen ? |
| | |
| | #2 (permalink) |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
|
vielleicht gibts bei dir probleme mit der referenzierung. liegt dein onEnterFrame auf _root? du kannst ja auch mal ein trace(wagen) machen, um zu sehen, ob du den wagen dort überhaupt ansprichst !
__________________ |
| | |
| | #3 (permalink) |
| scriptvermurkser Registriert seit: Apr 2003
Beiträge: 269
|
ich hatte ursprünglich : this.onEnterFrame = function() { script.ball.attachMovie("test", "produkt", 1); if (script.ball.produkt.hitTest(_root.koll)){ script.stop(); localToGlobal(script.ball.produkt); _root.script.ball.produkt._x = 10; _root.script.ball.produkt._y = 10; //script.ball.produkt._x = wagen._x; //script.ball.produkt._y = wagen._y; trace("kollidiert"); delete this.onEnterFrame; } } also ein trace mit drin, wird auch ausgegeben. onEnterFrame liegt auf _root, im ersten und einzigen frame (bzw. 2 frames auf zwei ebenen, auf der oberen Ebene liegt das script) |
| | |
| | #4 (permalink) |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
|
nein, ich mein nicht trace("kollidiert") sondern wirklich: trace(wagen) entweder du bekommst dann als ausgabe: 1. undefined - dann kannst du den wagen dort so nicht ansprechen, er wird falsch referenziert 2. _level0.wagen ... - wagen existiert dort und kann angesprochen werden veruch das mal.
__________________ |
| | |
| | #5 (permalink) |
| scriptvermurkser Registriert seit: Apr 2003
Beiträge: 269
|
ich bekomme _level0.wagen wagen ist also da, ich hatte ja auch erst mal wagen rausgenommen und _root.script.ball.produkt._x = 10; gesagt, also einen festen Wert zugewiesen, um zu sehen, ob es überhaupt funktioniert. |
| | |
| | #6 (permalink) |
| scriptvermurkser Registriert seit: Apr 2003
Beiträge: 269
|
ich glaube ich weiss jetzt. flash kann wahrscheinlich nicht einfach den film produkt, welcher im film ball, welcher im film script liegt aus den filmen rausnehmen und positionieren, ich muss den fim positionieren, in dem die anderen drin sind, also script. Das geht dann auch. script._x = 10; dann wird script incl. ball und produkt positioniert. DAs erklärt zwar, warum es nicht funktioniert, löst aber nicht mein Problem, dann ich möchte nur "produkt" an einer bestimmten Stelle haben. und nicht die anderen beiden filme. |
| | |
| | #7 (permalink) |
| a.k.a maddin79 Registriert seit: Jul 2003 Ort: berlin f-hain
Beiträge: 1.693
|
und wenn du _root.script.ball.produkt._x = 100; machst passiert auch nix???? nochmal zum verständnis: die position eines mcs ist IMMER relativ zu seinem _parent-film. wenn du also _root.script.ball.produkt._x = 10; schreibst, dann wird produkt zehn pixel neben 0,0 von ball gesetzt. und das heißt, daß die position von produkt ABHÄNGIG ist von der posiotion von ball. wenn z.B. : script._x = 100; script.ball._x = 100; script.ball.produkt._x = 100; dann ist die absolute position von produkt auf der bühne nicht 100 sondern: 100 + 100 + 100 = 300 soweit verstanden?? wenn du nun script.ball.produkt._y = wagen._y; schreibst dann und wagen meinetwegen _y = 100 hat (relativ zu _root) und du nun produkt um diese 100 px IM mc ball verschiebst, dann ist produkt NICHT automatisch auch auf 100 px relativ zu root, sondern relativ zu ball. deshalb könntest du folgendes probieren: du mußt dir die verschiebung berechnen, also die positionen von script, ball und wagen gegeneinander rechnen. aber da laß ich dich erstmal alleine dran kniffeln :-)
__________________ |
| | |
| | #8 (permalink) |
| scriptvermurkser Registriert seit: Apr 2003
Beiträge: 269
| du hast ja so recht...
[QUOTE=maddin79]und wenn du _root.script.ball.produkt._x = 100; machst passiert auch nix???? doch tut es. Hab das nochmal getestet, hab wohl vorher die x-Verschiebung zu klein gemacht um es zu dieser frühen Stunde zu erkennen. Aber das war ganz gut so, denn so habe ich von dir eine wunderbare Auseinanderklamüserung der Zusammenhänge erhalten und bedanke mich recht herzlich dafür. Die hab sogar ich verstanden Das hieße, ich müsste berechnen, wieviel ich produkt in ball verschieben muss, damit er an der Stelle ist, an der ich ihn haben will, während ball und script aber da bleiben, wo sie sind. Hab aber jetzt gemerkt, dass ich was ganz anderes will. Ich will nähmlich produkt aus den filmen raus haben und dann an einer Stelle positionieren. Deswegen hab ich jetzt: name = "test" + random(2) this.onEnterFrame = function() { script.ball.attachMovie(name, "produkt", 1); if (script.ball.produkt.hitTest(_root.koll)){ script.stop(); wagen.attachMovie(name, "gekauft", 1); script.ball.produkt.removeMovieClip(); delete this.onEnterFrame; } } das funzt auch alles wunderbar, wie ich es möchte. gibt nur ein Problem ich möchte, dass nachdem mein Objekt an wagen angehängt und EnterFrame deleted wurde, das ganze wieder von vorne beginnt, sprich das ganze von oben wieder abgefragt wird. Also ab: name = "test" + random(2) this.onEnterFrame = function() { ... Also nach dem Motto: tu so, als ob du gerade an diesem frame angekommen bist und das ganze script abarbeitest. Kann man das irgendwie machen? und wenn ja, wie |
| | |
| | #9 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
|
jo geht.. musste dir ne function schreiben: ActionScript:
die function kannst du dann in nen SetInterval/in enterFrame setzen oder aber auch rekursiv aufrufen (abbruchbedingung bitte nicht vergessen ) um sie mehrmals hintereinander auszuführen!Robert
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |