Toon posts:

Director 8.5 "screensaver"

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig om een screensaver te maken via Macromedia Director 8.5. Nu wil ik dus wanneer je de muis beweegt uit het programma gaat. Ik heb het nu via "MouseWithin" gedaan,

dus:
-----------------
On MouseWithin Me
Quit
End
-----------------

maar wanneer de muis nu al binnen het bereik is wat ik heb aangegeven, sluit deze dus gelijk al af i.p.v. wanneer je muis beweegt. Ik zoek dus de optie

-----------------
on MouseMove me
Quit
End
-----------------

maar dit wordt helaas niet ondersteund door Director. Iemand een TIP? :? :?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

P&W -> W&G

daar kennen ze director beter ;)

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
oh oeps, sorry... :)

  • armor
  • Registratie: Januari 2001
  • Laatst online: 09-03 07:11

armor

Too much to Do, Too......

Hey ... ik heb ff een scriptje voor je geschreven
.

je hebt 2 movie scripts nodig ... nml:

movie script 1:
-------------------------
on startmovie
global x,y
set x= the mouseH
set y= the mouseV
go to the frame
end

dit zet de start x en y positie van je cursor in 2 variabelen.
----------------------------

movie script 2:
----------------------------
global x,y

on test
if x<> the mouseH then
quit
else if y<> the mouseV then
quit
end if
end test

checked de huidige x y pos van je muis ...
als die veranderd is word de movie gestopt.
--------------------

deze test moet aangeroepen worden in een x aantal frame scriptjes ...


dus om de aantal frames knal je dit framescript er in:
------------------------
on exitFrame me
test
end
-------------------------

dit zou moeten werken ...

all work and no play makes Jack a dull boy.


  • Verwijderd
  • Registratie: November 2000
  • Laatst online: 24-01-2022
Ziet er als een kloppend scrippie uit. Had het zelf anders geprogrammeerd maar het idee blijft hetzelfde, check waar de muis is en blijf dan vervolgens checken of die daar nie is.

Nu vraag ik me wel af of er geen handler is die zoiets afvangt, ook voor bijvoorbeeld het toessen bord. iets van while input = FALSE of if Idle then... Maar ja Dit moet werken.

  • armor
  • Registratie: Januari 2001
  • Laatst online: 09-03 07:11

armor

Too much to Do, Too......

Op vrijdag 15 maart 2002 15:51 schreef Spiney het volgende:
Ziet er als een kloppend scrippie uit. Had het zelf anders geprogrammeerd maar het idee blijft hetzelfde, check waar de muis is en blijf dan vervolgens checken of die daar nie is.

Nu vraag ik me wel af of er geen handler is die zoiets afvangt, ook voor bijvoorbeeld het toessen bord. iets van while input = FALSE of if Idle then... Maar ja Dit moet werken.
1 Geen idee of daar een handler voor is ... zou je wel denken dat er wel iets voor zou zijn

2 maar jij zou het anders hebben gedaan ... hoe zou jij het hebben gedaan ?
(dit is geen flame maar alleen benieuwd hoe iemand anders dit zou oplossen) ..

3 dit werkt zeker want het is getest :9

4 er is wel een functie die checked of er geen muis beweging is .. maar heb er nog Geen gevonden voor Wel een muis beweging.

het kan nog iets makkelijker ...nml 1 var gebruiken nml
mouseLoc scheelt weer 1 var + 1 check :)

all work and no play makes Jack a dull boy.


  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

Op vrijdag 15 maart 2002 17:38 schreef armor het volgende:

[..]

[..]

4 er is wel een functie die checked of er geen muis beweging is .. maar heb er nog Geen gevonden voor Wel een muis beweging.

[..]
kun je dan niet doen if(!nomousemove){} (niet de syntax van director hoor)

mijn T.net systeemspecspagina


  • armor
  • Registratie: Januari 2001
  • Laatst online: 09-03 07:11

armor

Too much to Do, Too......

-----kick ....

ik wil wel weten of hier nog andere oplossingen voor zijn ...

all work and no play makes Jack a dull boy.


Verwijderd

Topicstarter
Nu ik deze code heb toegevoegd, krijg ik hetzelfde resultaat, na een aantal seconden wordt dus de screensaver opgestart, en zonder dat ik de muis beweeg wordt deze screensaver gelijk beeindigd. Dus van de hele screensaver zie ik niets.

--de screensaver is maar 1 frame--

nog iets, de screensaver wordt oneindig vele malen geopent, is er niet een stukje code dat de screensaver maar 1x opstart i.p.v. dat deze na bijvoorbeeld elke 5 min. nogmaals openent? Dus wanneer applicatie = geopent geen andere applicaties openen met zelfde extensie...

Dit staat nu dus in mijn (enige) frame script:

---------------
on startmovie
global x,y
set x= the mouseH
set y= the mouseV
go to the frame
end

global x,y

on test
if x<> the mouseH then
quit
else if y<> the mouseV then
quit
end if
end test

on exitFrame me
Go to the frame
cursor 200
test
end
---------------

Verwijderd

Dit in je moviescript stoppen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
on prepareMovie
  global myX,myY
  myX = the mouseH
  myY = the mouseV
  cursor 200
end

on test
  global myX,myY
  if myX<> the mouseH then quit
  if myY<> the mouseV then quit
end

behaviour script:
code:
1
2
3
4
on exitFrame me
  test
  Go to the frame
end

Volgens mij moet dat werken, heb iig even de myX en myY gevolgd en die werd bij het opstarten wel vast op de muisX -en Y ingesteld... ;)

  • armor
  • Registratie: Januari 2001
  • Laatst online: 09-03 07:11

armor

Too much to Do, Too......

Op maandag 18 maart 2002 09:57 schreef TropicalAngel het volgende:
Nu ik deze code heb toegevoegd, krijg ik hetzelfde resultaat, na een aantal seconden wordt dus de screensaver opgestart, en zonder dat ik de muis beweeg wordt deze screensaver gelijk beeindigd. Dus van de hele screensaver zie ik niets.

--de screensaver is maar 1 frame--
je moet het ook precies doen zoals ik hier boven beschreven heb ... niet alles in 1 frame pleuren want dan is je eerste var check altijd gelijk aan je start var, dus... sluit hij gelijk af.Je moet het aanmaken van de vars + checken van de vars afzonderlijk aanroepen. ik heb het net getest op "jouw"
manier en dan klopt het dat ie 'm gelijk afsluit ... op mijn manier blijft ie doorlopen tot je met de muis beweegt.
[b]
nog iets, de screensaver wordt oneindig vele malen geopent, is er niet een stukje code dat de screensaver maar 1x opstart i.p.v. dat deze na bijvoorbeeld elke 5 min. nogmaals openent? Dus wanneer applicatie = geopent geen andere applicaties openen met zelfde extensie...
ik heb nog nooit een screensaver in director gemaakt ...
ik maak altijd mijn screensavers in flash dus daar kan ik je geen antwoord op geven. (btw hoe maak je van een projector een .scr ? )

stuur anders eens de .dir dan kan ik eens kijken wat ik voor je kan doen ....

all work and no play makes Jack a dull boy.


Verwijderd

Topicstarter
ok ik heb 'm naar je mail adres gemailt... + info

Verwijderd

Topicstarter
Op maandag 18 maart 2002 11:38 schreef armor het volgende:

ik heb nog nooit een screensaver in director gemaakt ...
ik maak altijd mijn screensavers in flash dus daar kan ik je geen antwoord op geven. (btw hoe maak je van een projector een .scr ? )
Zodra je de exe gecompiled hebt, kun je deze renamen (hernoemen) naar "*.scr". Nu alleen nog in de C:\Windows\ map plaatsen.

  • armor
  • Registratie: Januari 2001
  • Laatst online: 09-03 07:11

armor

Too much to Do, Too......

Op maandag 18 maart 2002 12:07 schreef TropicalAngel het volgende:
ok ik heb 'm naar je mail adres gemailt... + info
berichtje ontvangen er is een aangepaste versie onderweg naar je ..... :)

all work and no play makes Jack a dull boy.


Verwijderd

Topicstarter
ok thanks, nu werkt het, nu alleen nog het probleem dat het programma maar 1x opent, i.p.v. dat die oneindig blijft openen. Dus op een of andere manier locken zodat het prog. maar 1 keer kan openen. Is dat in de source-code aan te passen? Want naar een aantal min. crasht windows omdat die te veel wordt geopent en geen geheugen meer heeft... lol

daar gaat m'n screensaver... |:(

Verwijderd

Topicstarter
In de Director.ini staat het volgende:
[Settings]
;SingleInstance=1
;This property only functions in Windows Director and Projectors.
; 1: If the application is already running, attempts to launch a second
; copy will bring the existing copy to the front of your desktop, without
; launching a new copy.
; 0: Default behavior. Multiple copies of the application can run concurrently.


Ik heb nu dus een bestand aangemaakt "test.ini" (ik heb even het origele gecompile'de (*.exe) bestand even hernoemt naar: test.exe) in het ini bestand staat:
-----
[Settings]
SingleInstance=1
-----

Nu is het probleem half opgelost, wanneer de applicatie voor een 2de x "handmatig" wordt opgestart, springt die automatisch naar dezelfde actieve applicatie (dit werkt dus, weer wat bijgeleerd!). Nu kan het dus aan de extensie liggen die ik hernoem naar *.scr dat het dan weer niet werkt. Of het gaat gewoon niet via director. Want zodra de screensaver automatisch geactiveert wordt, blijft de applicatie oneindig x openen totdat die weer crasht.

  • Verwijderd
  • Registratie: November 2000
  • Laatst online: 24-01-2022
Sorry dat ik nie eerder gereageerd heb maar waarop ik het anders had gedaan is in de movieScript, die gebruik ik namelijk niet, het liefst alleen behaviours en als het moet frameScripts. Ik zou het volgende gedaan hebben (half Pseudo-code, want ik zit nie achter een bak met Director)

property pMouseLoc

on beginSprite me
pMouseLoc = mouse.loc
end beginSprite

on exitframe me
if mouse.loc = pMouseLoc then
go the frame
else
quit
end if
end exitFrame

Dus dit sprite aan een sprite hangen, deze geeft wat waardes weg als hij onstaat en elke keer dattie een frame uitgaat kijkt die sprite naar de mouse of die nog op zijn begincoordinaten zit (kan ook nog uitgebreider dat je muis ietsje mag bewegen oid of met toestenbord reacties) Als dat zo is dat gaat ie de zooi herhalen, anders stopt het programma.

Voordelen zijn dat de code kleiner is, op een plek staat en daardoor makkelijker aanpasbaar. verder voordeel is dat het nu een behaviour is en dus kan worden hergebruikt (niet dat dat met deze veel zin zou hebben maar het is "good practice" als je echt OOP gaat programeren.) Kweet nie of het echt veel uitmaakt maar ik heb vernomen dat als je zwaar gaat coderen voor grote projecten dat behaviours sneller en efficenter zijn dan scripts omdat deze laatste constant naar elkaar verwijzen. Maar dat kan ik liegen :{

Doh, dom, gewoon hernoemen naar .scr? dat gaan we eens testen, heb wel wat leuke interactieve screensavers dan, uitzetten met Esc. :)
Pagina: 1