hilfdirselbst.ch
Facebook Twitter gamper-media
Anonym
Beiträge: 22827
24. Jun 2003, 09:09
Beitrag #1 von 5
Bewertung:
(889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

sehr komplexes Problem


Hallo, ich habe noch ein weitaus schwierigeres Problem zu lösen:

In meinem Director-Film habe ich zwei Objekte, die sich bewegen. Wenn man nun mit der Maus auf eines dieser Objekte kommt, macht der Film eine Pause. Wenn man jetzt klickt sollte ein Textdarsteller eingeblendet werden, der sich an einem ganz anderen Ort auf der Bühne befindet. Die zwei bewegenden Objekte müssen auch dort bleiben, wo sie waren, als man mit der Maus darauf gekommen ist. Wenn man dann die Maus vom Objekt wieder weg bewegt, wird der Film wieder fortgesetzt.

Geht das irgendwie?

Vielen Dank
Gruss Urs Top
 
X
donkey shot
Beiträge: 1416
24. Jun 2003, 14:51
Beitrag #2 von 5
Beitrag ID: #40951
Bewertung:
(889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

sehr komplexes Problem


Ich kann Dich beruhigen. Das Problem ist eher nicht komplex. Also kein Grund, mir einen Schreck einzujagen... ;)

Ich müßte allerdings noch ein paar Dinge wissen:

Wie bringst Du die Objekte dazu sich zu bewegen? Hast du einen Bewegungstween, ist das eine programmierte Animation, eine Filmschleife oder was passiert?

Es gäbe zum Bleistift den Befehl "delay", das Problem ist aber, das dann fast alles pausiert. Es gibt noch andere Möglichkeiten, aber dazu müsste ich obiges wissen. Hier sind aber schon ein paar Lösungsansätze (Vielleicht reichen die schon)...

Das mit dem Textdarsteller ist ganz einfach:

Den Textdarstelller platzierst du in irgendeinem Spritekanal (zB. 64)
und weist ihm dieses Verhalten zu:

on beginSprite me
sprite(the spriteNum of me).visible = FALSE
end beginsprite

dem auslösenden Button gibst Du das folgende Verhalten (statt der 64 setzt du den entsprechenden Spritekanal ein):

on mouseUp me
sprite(64).visible = TRUE
end mouseUp

Du kannst das ganze aber auch fast ohne Lingo lösen, kommt darauf an, wie Dein Film organisiert ist. Du weist dem klickbaren Objekt das folgende Verhalten zu

on mouseUp me
go to "Beispielmarker"
end mouseUp

Dann bastelst du in einen der folgenden Frames einen Marker, den du benennst wie im Skript. In den Kanal mit den Zeitsteuerungen (der mit der Stoppuhr) klickst du doppelt hinein und stellst "Warten" ein, zB. zwei Sekunden. Den Textdarsteller packst Du in einen einzelnen Frame unter dem Marker. Dann taucht er ja automatisch auf.

grüsse

Christof
als Antwort auf: [#40853]
(Dieser Beitrag wurde von donkey shot am 24. Jun 2003, 14:53 geändert)
Top
 
Anonym
Beiträge: 22827
25. Jun 2003, 18:21
Beitrag #3 von 5
Beitrag ID: #41195
Bewertung:
(889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

sehr komplexes Problem


Es ist so:

Ich nehme an, das ist ein Bewegungstween:
Das Objekt, das sich bewegt, bewegt sich von links ausserhalb der Bühne (In Sprite 1) nach rechts bis wieder ausserhalb der Bühne (in Sprite 500), danach fängt das Ganze wieder von vorne an.
Das (die Bewegung auf 500 Sprites verteilen) habe ich so machen müssen, weil es nicht ruckeln soll, wenn sich die Objekte bewegen.

Darum funktioniert das mit dem Sprite visible nicht und logischerweise das mit dem Marker auch nicht!

Nun ist es zusätzlich noch so, dass ich zwei bewegende Objekte habe. Das Zweite bewegt sich auf die gleiche Art wie das Erste, nur von rechts nach links. Wenn man auf dieses zweite Objekt klickt, sollte dann ein anderer Text erscheinen.

Wenn man dann die Maus von den bewegenden Objekten weg bewegt, sollte dann der Film fortsetzen und der Text wieder verschwinden.

So, ich glaube nun ist es ein kompliziertes Problem. Ich hoffe, Du kannst mir trotzdem weiterhelfen.

Vielen Dank im Voraus.

Liebe Grüsse
Urs
als Antwort auf: [#40853] Top
 
donkey shot
Beiträge: 1416
26. Jun 2003, 15:10
Beitrag #4 von 5
Beitrag ID: #41337
Bewertung:
(889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

sehr komplexes Problem


Wenn die Sprites sich nur linear bewegen probiers mal wie folgt:

In Spritekanal 1 tust du ein Rechteck mit folgendem Verhalten:

----------------------

global playstate
property mystage

on beginSprite me

playstate = 1
myStage = the stageRight - the stageleft
sprite(the spriteNum of me).locH = 0 - sprite(the spriteNum of me).width
sprite(3).visible = FALSE

end beginSprite

on enterFrame me

if playstate = 1 then
if the locH of sprite(the spriteNum of me) > myStage then
sprite(the spriteNum of me).locH = 0 - sprite(the spriteNum of me).width
else
sprite(the spriteNum of me).locH = sprite(the spriteNum of me).locH + 5
end if
else
nothing
end if

end enterFrame

on mouseEnter me

playstate = 0
sprite(3).visible = TRUE

end mouseEnter

on mouseLeave me

playstate = 1
sprite(3).visible = FALSE

end mouseLeave

-----------------------------

in Kanal 2 packst du ein zweites Rechteck mit folgendem Verhalten:

global playstate
property mystage

on beginSprite me

playstate = 1
myStage = the stageRight - the stageleft
sprite(the spriteNum of me).locH = myStage
sprite(3).visible = FALSE

end beginSprite

on enterFrame me

if playstate = 1 then
if the locH of sprite(the spriteNum of me) < 0 - sprite(the spriteNum of me).width then
sprite(the spriteNum of me).locH = myStage
else
sprite(the spriteNum of me).locH = sprite(the spriteNum of me).locH - 5
end if
else
nothing
end if

end enterFrame

on mouseEnter me

playstate = 0
sprite(3).visible = TRUE

end mouseEnter

on mouseLeave me

playstate = 1
sprite(3).visible = FALSE

end mouseLeave

---------------------------

In Spritekanal 3 packt du Deinen Text. Dann schreibst du ein Frameskript:

on exitFrame me
go to the frame
end exitFrame

Die ganze Animation findet nur auf einem Frame statt. Die Geschwindigkeit der bewegung kannst du ändern indem du in den Skripten die 5 in den Zeilen

sprite(the spriteNum of me).locH = sprite(the spriteNum of me).locH + 5

und

sprite(the spriteNum of me).locH = sprite(the spriteNum of me).locH - 5

änderst. Das ist die Bewegung pro Frame in Pixel.

Den Textdarsteller kannst du auch in einen anderen Kanal packen. Dann mußt du überall bei sprite(3) die entsprechende Zahl einsetzen. Wenn Du trotzdem mit dem Tween arbeiten willst, kannst Du dieses Skript verwenden (Textdarsteller wäre sprite 3):

property myFrame

on mouseEnter me
pause(sprite (the spriteNum of me))
myFrame = the frame
sprite(3).visible = TRUE
end mouseEnter

on mouseLeave me
play frame myFrame + 1
end mouseLeave

on exitFrame
sprite(3).visible = FALSE
end exit

Dann mußt du dem textsprite noch dieses Verhalten hinzufügen:

on beginSprite me
sprite(the spriteNum of me).visible = FALSE
end beginSprite

grüsse

Christof
als Antwort auf: [#40853]
(Dieser Beitrag wurde von donkey shot am 26. Jun 2003, 15:30 geändert)
Top
 
Anonym
Beiträge: 22827
3. Jul 2003, 14:54
Beitrag #5 von 5
Beitrag ID: #42370
Bewertung:
(889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

sehr komplexes Problem


Lieber Christof

1000 Dank für Deine Hilfe!

Es funktioniert einwandfrei und wenn man weiss wie und warum ist es ganz einfach!

Bis zum Nächsten Problemfall

Gruss Urs
als Antwort auf: [#40853] Top
 
X