Director MX 2004: ink, inchiostri ed aree attive complesse.

Di: Pablito | 26/09/2020 17:40:46
Innanzi tutto grazie per gli altri suggerimenti... ma rieccomi con un altro quesito!
Come si fa a fare in Director una cosa tipo l’image map HTML? Nel senso, ho uno sprite che contiene una bitmap sullo Stage, e voglio associarvi istruzioni diverse al passaggio del mouse, a seconda dell’area in cui il mouse è posizionato. Le mie aree sono di forma irregolare, per cui non posso risolvere semplicemente mettendoci sopra degli altrettanti sprite trasparenti...

Risposte



ciao
o provi a usare il componete webxtra ,cheti permette di avere una formattazione html o nonso

Di: daniele85 | 26/09/2020 17:41:46


Daniele, è apprezzabile la tua voglia di intervenire sempre, però evita di dare risposte affrettate o fuorvianti, specialmente se non sei sicuro che la risposta sia utile per risolvere il problema.
Basta usare un IF nidificato che verifichi la posizione del puntatore del mouse sui due assi: X e Y.
Se ad esempio vogliamo inviare la testina di riproduzione al fotogramma 10 quando il mouse si trova tra 50 e 100 sull’asse X e tra 150 e 250 sull’asse Y.
Nel nostro esempio basterà associare al primo fotogramma il seguente codice:
on exitFrame me
if _mouse.mouseH>50 then
if _mouse.mouseH<100 then
if _mouse.mouseV>150 then
if _mouse.mouseV<250 then
go to frame 10
end if
end if
end if
end if
go to the frame
end
-- Naturalmente “go to frame 10” può essere una qualsiasi operazione da personalizzare.
-- Questo codice è valido ed è testato su Director MX 2004.
Buon lavoro.

Di: Pablito | 26/09/2020 17:41:46


Grazie Pablito,
mi sorge però una domanda e un osservazione:
Ok per la soluzione dell'if nidificato. A tal proposito mi chiedevo però se c'era un motivo (performance, compatibilità...) per usare la 'nidificazione' e non i classisi and. Cioè:
if (_mouse.mouseH>50) and (_mouse.mouseH<100) then...
Ma a parte questa mia curiosità. Avevo pensato anch'io alla soluzione di intercettare la posizione del mouse. Solo che per beccare un rettangolo ok, ma per una forma più complessa, ma anche solo un triangolo, mi sembra che la praticità della cosa tenda a crollare.
Ma ieri notte ho scoperto per caso una cosa: ti chiedo se secondo te è affidabile.
Inserisco una bitmap e la piazzo sullo stage mettendogli 8 come valore della proprietà ink (spite / display). Tra l'altro 8 non compare nemmeno nella tendina in cui c'è copy, matte etc...
Se io associo allo sprite un qualsiasi evento legato al mouse (ad esempio on mouseWithin), l'evento non ha luogo nelle zone trasparenti della mia bitmap.
Da questo consegue che, nonostante non mi sembri molto pulita, potrebbe essere una soluzione al problema del 'mappare' uno sprite.
Cosa ne dici?

Di: Maz | 26/09/2020 17:41:46

Director MX 2004: ink, inchiostri ed aree attive complesse.

Bravissimo Maz, hai risolto!
Ho importato un gif bianco e nero al tratto ed associando al primo frame il seguente codice, il cursore cambia proprio sulla zona nera dello sprite, ignorando il bianco che nel frattempo era sparito per merito dell’inchiostro “Matte”, che è presente come seconda voce della tendina nel Property Inspector.
on exitFrame me
sprite(1).ink=8
sprite(1).cursor = 1
_movie.go(1)
end
In Director MX 2004 gli inchiostri (ink) sono:
0 = Copy
1 = Transparent
2 = Reverse
3 = Ghost
4 = Not copy
5 = Not transparent
6 = Not reverse
7 = Not ghost
8 = Matte
9 = Mask
32 = Blend
33 = Add pin
34 = Add
35 = Subtract pin
36 = Background transparent
37 = Lightest
38 = Subtract
39 = Darkest
40 = Lighten
41 = Darken
Riguardo invece all’uso di AND nell’IF, non ci sono problemi, è lo stesso (io mi ricordo massimo un AND per riga),
anche perché sempre Then bisogna aggiungere per verificare poi la posizione sull’asse Y.
Grazie per aver condiviso una soluzione molto efficace al problema.

Di: Pablito | 26/09/2020 17:41:46