Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

MIAW déplaçable

Compatible Director MX2004. Cliquer pour en savoir plus sur les compatibilités.Par Leedoriden, sebastien.portebois (Sébastien Portebois), le 13 octobre 2005

Hello

MIAW se traduit par ( Movie In A Window ) animation dans une fenêtre

Combien d’entre vous on souhaitait déplacer une MIAW ( sans la barre de titre ) ?

Question souvent posée sur le forum, donc voici quelques explications

pour ouvrir une MIAW il nous faut deux fichiers dir, le 1er s’appelle main.dir et le 2em MoveMIAW.dir

Main.dir : ouvrir la MIAW via un bouton par exemple script de comportement placé sur le bouton en question

on mouseup
 w = window().new("MoveMIAW") -- MoveMIAW est le nom du fichier dir à ouvrir
 w.open() -- ouvrir la fenêtre
end

MoveMIAW.dir : déplacer cette fenêtre qui ne possède pas de barre de titre script de comportement pouvant être mis comme script de frame ou sur un sprite simulant une barre de titre personnalisée ou encore une zone pour déplacer la fenêtre

-- Move MIAW version 1.00
 
property pMouseDown
 
on beginsprite
pMouseDown = 0  
end
 
on mousedown
pMouseDown = 1  
end
 
on mouseup
pMouseDown = 0  
end
 
on prepareframe
if pMouseDown then  
  MIAWRect = (the activewindow).rect
 
  OffsetClick= _mouse.mouseloc - _mouse.clickloc -- syntaxe MX2004
-- OffsetClick= the mouseLoc - the clickLoc -- syntaxe avant MX2004
 
  (the activewindow).rect = MIAWRect.offset(OffsetClick.loch, OffsetClick.locv)
end if  
end

Ici, j’utilise une variable de propriété “pMouseDown” pour définir le moment où je clique pour déplacer cette fenêtre. La fenêtre suit le déplacement de la souris lorsque pMouseDown est vrai dans le gestionnaire on prepareFrame.

Sébastien Portebois propose une alternative intéressante en utilisant the actorlist et non plus une variable de propriété.

on mousedown me
(the actorlist).add(me)
end
 
on mouseup me
(the actorlist).deleteone(me)
end
 
on stepframe me
 MIAWRect = (the activewindow).rect
 
 OffsetClick= _mouse.mouseloc - _mouse.clickloc -- syntaxe MX2004
-- OffsetClick= the mouseLoc - the clickLoc -- syntaxe avant MX2004
 
 (the activewindow).rect = MIAWRect.offset(OffsetClick.loch, OffsetClick.locv)
end

le résultat de déplacement est identique à la méthode proposée juste au dessus mais il a l’avantage ( non négligeable ) de ne pas utiliser de variable qu’elle soit de propriété ou global.

tuto by Sebastien Portebois and Leedoriden