Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-07-2004, 08:08   #1 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
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 ?
SwKy ist offline   Mit Zitat antworten
Alt 21-07-2004, 08:17   #2 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
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 !
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 21-07-2004, 08:27   #3 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
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)
SwKy ist offline   Mit Zitat antworten
Alt 21-07-2004, 08:30   #4 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
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.
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 21-07-2004, 08:38   #5 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
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.
SwKy ist offline   Mit Zitat antworten
Alt 21-07-2004, 08:44   #6 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
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.
SwKy ist offline   Mit Zitat antworten
Alt 21-07-2004, 08:57   #7 (permalink)
a.k.a maddin79
 
Benutzerbild von madflanderz
 
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 :-)
__________________
www.madflanderz.de

ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°` _ addicted to bass _ `°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
madflanderz ist offline   Mit Zitat antworten
Alt 21-07-2004, 09:20   #8 (permalink)
scriptvermurkser
 
Benutzerbild von SwKy
 
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
SwKy ist offline   Mit Zitat antworten
Alt 21-07-2004, 12:24   #9 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
jo geht.. musste dir ne function schreiben:

ActionScript:
  1. deinefunction = function () {
  2. //...hier das script rein
  3. }
  4.  
  5. //aufrufen kannste sie dann immer mit:
  6.  
  7. deinefunction;

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
pape ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele